update Tabelle Spalte nach dem einfügen neuen Datensatz mithilfe der MySQL-Trigger
Vorstellen, ich habe eine MySQL-Tabelle (tbl_test) mit folgenden Feldern: id, Titel, Priorität.
id wird automatisch hochgezählt. Ich brauche zu füllen Priorität Feld mit einem Wert, genauso wie id Feld nach dem einfügen.
Als ich bin neu in der MySQL-Trigger, bitte sagen Sie mir, was ich zu schreiben habe für Sie. Ich habe etwas gemacht , aber ich denke, es ist nicht wahr:
CREATE TRIGGER 'test' AFTER INSERT ON `tbl_test`
BEGIN
SET new.priority = new.id;
END
Vielen Dank für deine Hilfe.
- Ich glaube nicht, dass Sie das tun können. Ein
AFTER INSERT
- trigger kann nicht ändern Sie die gleiche Tabelle, weder durch die Ausstellung ein UPDATE - Was ist deine Lösung @AbdulManaf?
- Noch meine Antwort
Du musst angemeldet sein, um einen Kommentar abzugeben.
So, wie Sie sind, die versuchen, den Wert einer Spalte ist ein update. Weil Sie es tun nach einfügen operation abgeschlossen ist.
Sie tatsächlich benötigen einen
before
auslösen.Und weisen die gleiche neue auto inkrementierten Wert des primary key-Spalte der gleichen Tabelle, Sie besser bekommen es von
information_schema.tables
.Beispiel:
Hinweis:
Stellen Sie sicher, dass Sie don ' T haben keine vordefinierte trigger mit demselben Namen und/oder Aktion.
Wenn Sie etwas haben, dann legen Sie Sie vor dem erstellen der neuen.
;
fehlt nach dem Ende des erstenset ...
- Anweisung. Fügen Sie es hinzu.for each ..
. Können Sie fügen Sie bitte Ihre vollständigen veränderte trigger-definition, um Ihre post?create trigger ...
, in der ersten Zeile, die aus meinem Beispiel, das ist ein muss, definieren Sie einen trigger.create trigger ...
selbst. Ich habe das schreiben andere codes nur'$$'
aber kann alles sein wie in meiner Antwort'//'
. Ich verwendetdelimiter //
vorcreate trigger
geschlossen und es alsend; //
. Daher keine Bedeutung und sagte: "aber ich musste ....$$....' ...priority
Spalte, und führen Sie eine insert mit mehreren Gruppen von Werten. In meinen Tests, die unique-Einschränkung hält der insert 100% der Zeit.Ich glaube nicht, dass Sie das tun können. Ein AFTER INSERT-trigger kann nicht ändern Sie die gleiche Tabelle, weder durch die Ausstellung ein UPDATE noch von so etwas wie dieses:
Es gibt Fehler wie
Was Sie tun können, ist die Verwendung einer Transaktion:
Beispiel : die Struktur einer Tabelle wird wie folgt
Transaktion
Prüfen Sie die Daten