Kann MySQL Trigger eine CHECK-Einschränkung emulieren?
Im Gegensatz zu anderen RDBMS unterstützt MySQL CHECK-Einschränkungen nicht vollständig. Als Alternative bietet es jedoch Trigger an. Herkömmliche Trigger legen Standardwerte fest, anstatt Fehler zurückzugeben, sodass sich Benutzer fragen, ob es möglich ist, Trigger zu erstellen, die Bedingungen erzwingen und Fehler wie CHECK-Einschränkungen zurückgeben.
Erstellen von Triggern, die Fehler zurückgeben
Die Antwort ist ja. So erstellen Sie solche Trigger:
Für Aktualisierungsvorgänge:
DELIMITER $$ CREATE TRIGGER chk_stats1 BEFORE UPDATE ON stats FOR EACH ROW BEGIN IF NEW.month > 12 THEN SIGNAL SQLSTATE '45000'; SET MESSAGE_TEXT = 'Cannot add or update row: only'; END IF; END; $$
Dieser Trigger fängt Aktualisierungsversuche in der Tabelle „Statistik“ ab. Wenn der „Monat“-Wert in den neuen Daten 12 überschreitet, wird ein SQLSTATE-Fehler ausgelöst und eine aussagekräftige Fehlermeldung gesetzt.
Für Einfügevorgänge:
DELIMITER $$ CREATE TRIGGER chk_stats BEFORE INSERT ON stats FOR EACH ROW BEGIN IF NEW.month > 12 THEN SIGNAL SQLSTATE '45000'; SET MESSAGE_TEXT = 'Cannot add or update row: only'; END IF; END; $$
In ähnlicher Weise überprüft dieser Trigger „Monat“-Werte, bevor er Daten in die „Statistik“-Tabelle einfügt.
Emulieren von CHECK-Einschränkungen
Diese Trigger emulieren effektiv CHECK-Einschränkungen, indem sie die „ Monatsbereich. Jeder Versuch, Daten mit einem „Monat“-Wert größer als 12 zu aktualisieren oder einzufügen, löst einen Fehler aus. Dies ermöglicht die Datenintegrität, indem verhindert wird, dass ungültige Werte in der Datenbank gespeichert werden.
Das obige ist der detaillierte Inhalt vonKönnen MySQL-Trigger CHECK-Einschränkungen nachahmen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!