sql >> Databasteknik >  >> RDS >> Mysql

uppdatera tabellkolumnen efter att ha infogat ny post med MySQL-utlösare

Sättet du försöker ställa in värde på en kolumn är en uppdatering. Eftersom du gör det efter infogning operationen är klar.

Du behöver faktiskt en before utlösare.

Och för att tilldela samma nya automatiskt inkrementerade värde för primärnyckelkolumnen i samma tabell, bör du hämta det från information_schema.tables .

Exempel :

delimiter //
drop trigger if exists bi_table_name //

create trigger bi_table_name before insert on table_name
for each row begin
  set @auto_id := ( SELECT AUTO_INCREMENT 
                    FROM INFORMATION_SCHEMA.TABLES
                    WHERE TABLE_NAME='table_name'
                      AND TABLE_SCHEMA=DATABASE() ); 
  set new.priority= @auto_id;
end;
//

delimiter ;

Obs :Se till att du inte har någon fördefinierad utlösare med samma namn och/eller åtgärd. Om du har några, släpp dem innan du skapar den nya.

Observationer :
Enligt mysql-dokumentation på last_insert_id() ,

därför, beroende på last_insert_id() och auto_increment fältvärden i batchinlägg verkar inte tillförlitliga.



  1. Fix Msg 241 "Konvertering misslyckades vid konvertering av datum och/eller tid från teckensträng" i SQL Server

  2. Hur man jämför två kolumner i MySQL

  3. Vad är skillnaden mellan att använda en korskoppling och att sätta ett kommatecken mellan de två tabellerna?

  4. Hur man lägger till total rad i MySQL