Aby obejść wszystkie powyższe problemy, udało mi się skonstruować następujący, który działa świetnie!
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 ;
Prawie bierzemy najwyższy id
, pobierz log(2)
z tego, co daje nam odpowiedni AUTO_INCREMENT
id
. Następnie dodajemy 1
i zasil go do 2
.
Mam nadzieję, że pomoże to innym uniknąć bólu głowy.