MySQL-Prüfeinschränkungen (CHECK) können über die CREATE TABLE- oder ALTER TABLE-Anweisung implementiert werden, definiert entsprechend den tatsächlichen Integritätsanforderungen des Benutzers. Es kann CHECK-Einschränkungen für einzelne Spalten oder Tabellen erzwingen. Aber das MySQL-Handbuch schreibt sehr deutlich: „Alle Speicher-Engines analysieren die CHECK-Klausel, ignorieren aber die CHECK-Klausel.“ Obwohl es also so geschrieben werden kann, hat es keine einschränkende Wirkung.
Empfohlenes Tutorial: MySQL-Tutorial
Das spezifische Syntaxformat lautet wie folgt:
CHECK <表达式>
Wobei:
Wenn die CHECK-Einschränkungsklausel nach der Definition einer Spalte in der Tabelle platziert wird, wird diese Einschränkung auch als spaltenbasierte CHECK-Einschränkung bezeichnet.
Beim Aktualisieren von Tabellendaten prüft das System, ob die aktualisierten Datenzeilen die Bedingungen in der CHECK-Einschränkung erfüllen. MySQL kann einfache Ausdrücke verwenden, um CHECK-Einschränkungen zu implementieren, und ermöglicht auch die Verwendung komplexer Ausdrücke als qualifizierende Bedingungen, beispielsweise das Hinzufügen von Unterabfragen zu qualifizierenden Bedingungen.
Hinweis: Wenn die CHECK-Einschränkungsklausel nach der Definition aller Spalten und der Definition von Primärschlüsseleinschränkungen und Fremdschlüsseldefinitionen platziert wird, wird diese Einschränkung auch als tabellenbasierte CHECK-Einschränkung bezeichnet. Diese Einschränkung kann Qualifikationen für mehrere Spalten in der Tabelle gleichzeitig festlegen.
Prüfeinschränkungen beim Erstellen einer Tabelle festlegen
Die Syntaxregeln zum Festlegen von Prüfeinschränkungen beim Erstellen einer Tabelle lauten wie folgt:
CHECK(<检查约束>)
Tb_emp7-Daten erstellen In der Datenbanktabelle test_db muss der Wert des Gehaltsfelds größer als 0 und kleiner als 10000 sein. Die Eingabe-SQL-Anweisung und die laufenden Ergebnisse lauten wie folgt.
mysql> CREATE TABLE tb_emp7 -> ( -> id INT(11) PRIMARY KEY, -> name VARCHAR(25), -> deptId INT(11), -> salary FLOAT, -> CHECK(salary>0 AND salary<100), -> FOREIGN KEY(deptId) REFERENCES tb_dept1(id) -> ); Query OK, 0 rows affected (0.37 sec)
Prüfeinschränkungen beim Ändern der Tabelle hinzufügen
Die Syntaxregeln zum Festlegen von Prüfeinschränkungen beim Ändern der Tabelle lauten wie folgt:
ALTER TABLE tb_emp7 ADD CONSTRAINT <检查约束名> CHECK(<检查约束>)
Ändern Sie die tb_dept-Datentabelle, Anforderungen Der Wert des ID-Felds ist größer als 0. Die eingegebene SQL-Anweisung und die laufenden Ergebnisse lauten wie folgt.
mysql> ALTER TABLE tb_emp7 -> ADD CONSTRAINT check_id -> CHECK(id>0); Query OK, 0 rows affected (0.19 sec) Records: 0 Duplicates: 0 Warnings: 0
Lösung: Verwenden Sie Trigger, um die Check-Constraint-Funktion CHECK zu implementieren.
(1) Erstellen Sie tb_student (Studenteninformationstabelle).
-- 创建学生信息表 CREATE TABLE tb_student ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(30), age INT NOT NULL );
(2) Erstellen Sie einen Trigger, der prüft, ob das Altersfeld gültig ist.
-- 创建触发器 CREATE TRIGGER trg_tb_student_insert_check BEFORE INSERT ON tb_student FOR EACH ROW BEGIN DECLARE msg varchar(100); IF NEW.age <= 0 OR NEW.age >= 100 THEN SET msg = CONCAT('您输入的年龄值:',NEW.age,' 为无效的年龄,请输入0到100以内的有效数字。'); SIGNAL SQLSTATE 'HY000' SET MESSAGE_TEXT = msg; END IF; END;
(3) Schreiben Sie Testaussagen.
INSERT INTO tb_student(name,age) VALUES('Kevin',120);
Das obige ist der detaillierte Inhalt vonSo schreiben Sie MySQL-Prüfeinschränkungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!