Heim >Datenbank >MySQL-Tutorial >Können MySQL-Trigger CHECK-Einschränkungen nachahmen?

Können MySQL-Trigger CHECK-Einschränkungen nachahmen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-17 15:42:02780Durchsuche

Can MySQL Triggers Mimic CHECK Constraints?

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!

Stellungnahme:
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