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
Freigeben: 2024-11-10 14:29:03
Original
950 Leute haben es durchsucht

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
Nach dem Login kopieren

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();
Nach dem Login kopieren

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!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage