Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Aktualisieren Sie die Tabellenspalte nach dem Einfügen eines neuen Datensatzes mit MySQL-Triggern

Die Art und Weise, wie Sie versuchen, einen Wert für eine Spalte festzulegen, ist ein Update. Weil Sie es nach dem Einfügen tun Vorgang ist abgeschlossen.

Eigentlich braucht man ein before Abzug.

Und um denselben neuen automatisch inkrementierten Wert der Primärschlüsselspalte derselben Tabelle zuzuweisen, holen Sie ihn besser aus information_schema.tables .

Beispiel :

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 ;

Hinweis :Stellen Sie sicher, dass Sie keine vordefinierten Auslöser mit demselben Namen und/oder derselben Aktion haben. Wenn Sie welche haben, löschen Sie sie, bevor Sie den neuen erstellen.

Beobachtungen :
Gemäß MySQL-Dokumentation auf last_insert_id() ,

daher abhängig von last_insert_id() und auto_increment Feldwerte in Stapeleinfügungen scheinen nicht zuverlässig zu sein.