För att komma runt alla problem ovan kunde jag konstruera följande som fungerar utmärkt!
DELIMITER $$
CREATE TRIGGER testbitcompatid BEFORE INSERT ON Table
FOR EACH ROW
BEGIN
SET @LAST_ROW = (SELECT MAX(id) FROM Table);
SET NEW.id = CASE WHEN @LAST_ROW IS NULL THEN 1 ELSE @LAST_ROW * 2 END;
END;
$$
DELIMITER ;
I stort sett tar vi det högsta id
, ta tag i log(2)
av den vilket ger oss motsvarande AUTO_INCREMENT
id
. Vi lägger sedan till 1
, och driv det upp till 2
.
Jag hoppas att detta hjälper till att förhindra en del huvudvärk för andra.