Ist es möglich, INSERTs mithilfe von Triggern fehlzuschlagen?
In MySQL haben Trigger die Möglichkeit, Daten vor Einfügungen und Aktualisierungen zu ändern. Es wurde jedoch beobachtet, dass diese Trigger nicht direkt dazu führen können, dass der entsprechende Einfüge- oder Aktualisierungsvorgang fehlschlägt, was Anlass zu Bedenken hinsichtlich der Validierung gibt.
Diese Einschränkung ergibt sich aus dem Fehlen eines spezifischen Mechanismus zur Ausnahmebehandlung in MySQL Auslöser. Während der SQL-Standard SIGNAL- und RESIGNAL-Anweisungen für die Fehlerbehandlung definiert, sind sie noch nicht in MySQL implementiert.
Es wurde jedoch eine Problemumgehung entwickelt, um diese Funktionalität zu emulieren, indem erzwungen wird, eine nicht vorhandene Spalte innerhalb der zu verwenden auslösen. Dies löst einen Fehler in MySQL aus, der als Hinweis auf einen fehlgeschlagenen Vorgang verwendet werden kann. Der folgende Code veranschaulicht diese Technik:
CREATE TRIGGER mytabletriggerexample BEFORE INSERT FOR EACH ROW BEGIN IF(NEW.important_value) < (fancy * dancy * calculation) THEN DECLARE dummy INT; SELECT Your meaningful error message goes here INTO dummy FROM mytable WHERE mytable.id=new.id END IF; END;
Dieser Trigger wertet die Spalte „wichtiger_Wert“ aus und führt die erforderlichen Berechnungen durch. Wenn die Bedingung nicht erfüllt ist, wird versucht, Daten aus einer nicht vorhandenen Spalte auszuwählen, was einen Fehler auslöst und dazu führt, dass der Einfügevorgang fehlschlägt.
Das obige ist der detaillierte Inhalt vonKönnen MySQL-Trigger direkt INSERT-Fehler verursachen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!