Emulieren von CHECK-Einschränkungen mit MySQL-Triggern
In MySQL werden CHECK-Einschränkungen, die normalerweise zur Durchsetzung der Datenintegrität verwendet werden, wie in anderen nicht vollständig unterstützt RDBMS. Es ist jedoch möglich, ihre Funktionalität mithilfe von Triggern zu simulieren.
Ist es möglich, einen Fehler-zurückgebenden Trigger zu konstruieren?
Ja, es ist möglich, einen Trigger zu erstellen das einen Fehler zurückgibt, wenn eine angegebene Bedingung nicht erfüllt ist. Dies emuliert effektiv das Verhalten einer CHECK-Einschränkung.
Beispiel-Trigger für Updates
Um einen Trigger zu erstellen, der bei Updates einen Fehler zurückgibt, verwenden Sie die folgende Vorlage:
CREATE TRIGGER <trigger_name> BEFORE UPDATE ON <table_name> FOR EACH ROW BEGIN IF (condition_not_met) THEN SIGNAL SQLSTATE '45000'; SET MESSAGE_TEXT = 'Error message'; END IF; END;
Zum Beispiel, um zuvor zu überprüfen, ob der Monatswert in der Tabelle „Statistik“ kleiner oder gleich 12 ist Aktualisierung:
CREATE TRIGGER chk_stats1 BEFORE UPDATE ON stats FOR EACH ROW BEGIN IF (new.month > 12) THEN SIGNAL SQLSTATE '45000'; SET MESSAGE_TEXT = 'Month must be less than or equal to 12'; END IF; END;
Beispielauslöser für Einfügungen
Ähnlich für Einfügungen:
CREATE TRIGGER <trigger_name> BEFORE INSERT ON <table_name> FOR EACH ROW BEGIN IF (condition_not_met) THEN SIGNAL SQLSTATE '45000'; SET MESSAGE_TEXT = 'Error message'; END IF; END;
Zum Beispiel, um den Monatswert vorher zu überprüfen Einfügen in die „Statistik“-Tabelle:
CREATE TRIGGER chk_stats BEFORE INSERT ON stats FOR EACH ROW BEGIN IF (new.month > 12) THEN SIGNAL SQLSTATE '45000'; SET MESSAGE_TEXT = 'Month must be less than or equal to 12'; END IF; END;
Diese Trigger simulieren das Verhalten von CHECK Einschränkungen, die verhindern, dass Daten eingefügt oder aktualisiert werden, wenn die angegebenen Bedingungen verletzt werden.
Das obige ist der detaillierte Inhalt vonKönnen MySQL-Trigger CHECK-Einschränkungen simulieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!