sql >> Databasteknik >  >> RDS >> Mysql

Öka fältet tabell-ID med bitvis räkning

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.




  1. SQL COUNT() för nybörjare

  2. Returnera kolumninformation för en lagrad procedur i SQL Server:sp_sproc_columns

  3. Hur man automatiserar datainsamling på SQL Server Database Growth

  4. Ansluta till webbtjänst/API i MySQL?