Heim >Datenbank >MySQL-Tutorial >Wie kann ich in MySQL mithilfe eines Triggers einen Feldwert auf seine ID festlegen?

Wie kann ich in MySQL mithilfe eines Triggers einen Feldwert auf seine ID festlegen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-10 14:29:03904Durchsuche

How Can I Set a Field Value to Its ID in MySQL Using a Trigger?

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:

  1. Erstellen Sie einen Trigger, der prüft, ob die Spalte „group_id“ für jede eingefügte Zeile null ist.
  2. Wenn null, setzen Sie die Spalte „group_id“ auf den Wert der ID.
  3. Verwenden Sie die Triggertyp BEFORE INSERT, da er ausgeführt wird, bevor die Auto-Inkrement-ID generiert wird.

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn