Tatsächlich handelt es sich bei der MySQL SIGNAL-Anweisung um einen Fehlerbehandlungsmechanismus, der dazu dient, unerwartete Ereignisse zu behandeln und die Anwendung bei Bedarf ordnungsgemäß zu beenden. Im Grunde stellt es dem Handler Fehlerinformationen zur Verfügung. Die grundlegende Syntax lautet wie folgt:
SIGNAL SQLSTATE | condition_value [SET signal_information_item = value_1,[, signal_information_item] = value_2, etc;]
Hier ist das Schlüsselwort SIGNAL der SQLSTATE-Wert oder der Bedingungsname, der durch die DECLARE CONDITION-Anweisung deklariert wird. SIGNAL-Anweisungen müssen immer einen SQLSTATE-Wert oder eine benannte Bedingung angeben, die mithilfe eines SQLSTATE-Werts definiert wird. Der SQLSTATE-Wert für eine SIGNAL-Anweisung besteht aus einem fünfstelligen alphanumerischen Code. Wir können unseren eigenen SQLSTATE-Code nicht mit „00“ beginnen, da ein solcher Wert einen Erfolg anzeigt und keine Auswirkung auf die Signalisierung eines Fehlers hat. Wenn unser Wert ungültig ist, tritt ein Bad SQLSTATE-Fehler auf. Für die Behandlung aller Fehler sollten wir dem SQLSTATE-Wert „45000“ zuweisen, was „Unbehandelte benutzerdefinierte Ausnahme“ bedeutet.
Um die Verwendung der SIGNAL-Anweisung mit MySQL-Triggern zu veranschaulichen, verwenden wir das folgende Beispiel, in dem wir einen BEFORE INSERT-Trigger für die Tabelle Student_age erstellen. Wenn wir versuchen, ein Alter kleiner als 0 einzugeben, wird mithilfe der SIGNAL-Anweisung eine Fehlermeldung ausgegeben.
mysql> Create trigger before_insert_studentage BEFORE INSERT on student_age FOR EACH ROW BEGIN IF NEW.age<0 then SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'age less than 0'; END if; END; // Query OK, 0 rows affected (0.12 sec) mysql> Insert into student_age(age, name) values(-10,'gaurav')// ERROR 1644 (45000): age less than 0
Aus der obigen Ergebnismenge geht hervor, dass die Verwendung der SIGNAL-Anweisung einen Fehler auslöst, wenn wir versuchen, ein Alter unter 0 einzufügen.
Das obige ist der detaillierte Inhalt vonWie können wir die SIGNAL-Anweisung mit MySQL-Triggern verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!