Heim >Datenbank >MySQL-Tutorial >Wie kann ich in MySQL mithilfe eines Triggers einen Feldwert auf seine ID festlegen?
MySQL-Trigger zum Festlegen des Feldwerts auf ID
In MySQL ist es nicht möglich, ein Feld direkt auf den Wert seiner ID zu aktualisieren mit einem Auslöser. Dies liegt daran, dass Trigger ausgeführt werden, bevor oder nachdem eine Zeile eingefügt, aktualisiert oder gelöscht wird, aber bevor die Auto-Inkrement-ID generiert wird.
Um das gewünschte Verhalten zu erreichen, können Sie die folgende Problemumgehung verwenden:
Hier ist die MySQL-Anweisung für den Trigger:
CREATE TRIGGER MyTrigger BEFORE INSERT ON MyTable FOR EACH ROW BEGIN SET NEW.group_id = COALESCE(NEW.group_id, NEW.id); END
Leider funktioniert dieser Trigger nicht für das gewünschte Verhalten, da in der BEFORE INSERT-Phase der automatisch generierte ID-Wert noch nicht generiert wurde. Wenn group_id also null ist, wird standardmäßig NEW.id verwendet, was immer 0 ist.
Das Ändern des Auslösers auf Auslösen während der AFTER INSERT-Phase funktioniert ebenfalls nicht, da Sie Spaltenwerte nach einer Zeile nicht ändern können wurde eingefügt.
Die einzige Lösung besteht darin, das Einfügen durchzuführen und dann sofort den Wert für die Gruppen-ID zu aktualisieren, wenn er nicht festgelegt ist:
INSERT INTO MyTable (group_id, value) VALUES (NULL, 'a'); UPDATE MyTable SET group_id = COALESCE(group_id, id) WHERE id = LAST_INSERT_ID();
Das obige ist der detaillierte Inhalt vonWie kann ich in MySQL mithilfe eines Triggers einen Feldwert auf seine ID festlegen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!