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

MySQL-Trigger vor dem Einfügen der Update-Spalte mit neuer Auto-Increment-ID

AUTO_INCREMENT Spalte werden nur nach gesetzt Einfügung.

Wenn Sie Zugriff benötigen diesen Wert können Sie nur in einem AFTER INSERT eingeben Abzug. Sie können jedoch nicht ändern ein Spaltenwert in einem AFTER UPDATE auslösen...

Darüber hinaus können Sie die in Ihrem AFTER INSERT verwendete Tabelle nicht aktualisieren auslösen als (http://dev.mysql. com/doc/refman/5.0/en/stored-program-restrictions.html ):

Hier wäre die einzig vernünftige Lösung, eine gespeicherte Prozedur zu erstellen, um die Tabelle zu aktualisieren und die relevanten Spalten in einer Transaktion anzupassen, um Ihre atomare Einfügeanweisung zu "emulieren".

Davon abgesehen in Ihrem speziellen Fall , die key Spalte ist redundant, da diese Spalte nur die Verkettung von zwei anderen Spalten derselben Zeile ist.

Suchen Sie angesichts seines Namens nicht nach einer Möglichkeit, stattdessen einen zusammengesetzten Schlüssel zu erstellen? Etwas in der Art:

ALTER TABLE tbl ADD UNIQUE KEY (countryCode, id);