Heim > Datenbank > MySQL-Tutorial > Warum funktionieren meine MySQL CHECK-Einschränkungen nicht?

Warum funktionieren meine MySQL CHECK-Einschränkungen nicht?

Mary-Kate Olsen
Freigeben: 2025-01-10 11:20:45
Original
559 Leute haben es durchsucht

Why Aren't My MySQL CHECK Constraints Working?

Verstehen des CHECK-Einschränkungsverhaltens in MySQL

Die Handhabung von CHECK-Einschränkungen durch MySQL kann manchmal unerwartet sein. Eine CHECK-Einschränkung scheint inaktiv zu sein, selbst wenn sie korrekt definiert ist. Der Schlüssel liegt darin, die Kompatibilität der MySQL-Version zu verstehen.

MySQL 8.0.16 war die erste Version, die CHECK-Einschränkungen vollständig unterstützte. Wenn Ihre MySQL-Version älter als 8.0.16 ist, wird die CHECK-Klausel analysiert, aber von allen Speicher-Engines ignoriert. Daten, die gegen die Einschränkung verstoßen, werden fehlerfrei eingefügt.

Konsultieren Sie das offizielle MySQL-Referenzhandbuch (https://www.php.cn/link/e6c19a87ef9e816e02ce247d4f41d38a), um die Fähigkeiten Ihrer MySQL-Version zu bestätigen.

Alternativen zu CHECK-Einschränkungen (für ältere MySQL-Versionen):

Wenn Ihre MySQL-Version keine CHECK-Einschränkungsunterstützung bietet, sollten Sie die Verwendung von Triggern in Betracht ziehen. Trigger führen benutzerdefinierten Code als Reaktion auf Datenbankereignisse wie das Einfügen von Zeilen aus. Ein Trigger kann Daten vor dem Einfügen validieren und so die Datenintegrität sicherstellen.

Ein Auslöser zum Erzwingen eines nicht negativen Werts für das SD-Feld in einer Customer-Tabelle könnte beispielsweise sein:

<code class="language-sql">DELIMITER //
CREATE TRIGGER trig_sd_check BEFORE INSERT ON Customer
FOR EACH ROW
BEGIN
  IF NEW.SD < 0 THEN
    SET NEW.SD = 0;
  END IF;
END //
DELIMITER ;</code>
Nach dem Login kopieren

Dieser Trigger fängt INSERT-Anweisungen in der Customer-Tabelle ab. Wenn SD negativ ist, wird es vom Trigger auf Null gesetzt. Dies bietet eine ähnliche Funktionalität wie eine CHECK-Einschränkung.

Das obige ist der detaillierte Inhalt vonWarum funktionieren meine MySQL CHECK-Einschränkungen nicht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage