sql >> Database >  >> RDS >> Mysql

Tabel-ID-veld verhogen met bitsgewijze telling

Om alle bovenstaande problemen te omzeilen, kon ik het volgende maken, wat geweldig werkt!

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 ;

Vrijwel, we nemen de hoogste id , pak het log(2) ervan die ons de overeenkomstige AUTO_INCREMENT . geeft id . We voegen dan 1 . toe , en verhoog dat tot 2 .

Ik hoop dat dit helpt om hoofdpijn voor anderen te voorkomen.




  1. Hoe rijen te selecteren waar de kolomwaarde NIET NULL IS met ActiveRecord van CodeIgniter?

  2. Stel de tekenset en sortering van een tabel in MariaDB in

  3. Automatisch stringificeren van objecten bij het invoegen in een MySQL JSON-kolom met knex

  4. T-SQL - Aliasing met =versus as