Heim > Datenbank > MySQL-Tutorial > Hauptteil

So schreiben Sie MySQL-Prüfeinschränkungen

(*-*)浩
Freigeben: 2020-09-15 13:44:44
Original
13957 Leute haben es durchsucht

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

So schreiben Sie MySQL-Prüfeinschränkungen

Das spezifische Syntaxformat lautet wie folgt:

CHECK <表达式>
Nach dem Login kopieren

Wobei: bezieht sich auf den SQL-Ausdruck, der zur Angabe der zu prüfenden Qualifikationen verwendet wird.
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(<检查约束>)
Nach dem Login kopieren

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)
Nach dem Login kopieren

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(<检查约束>)
Nach dem Login kopieren

Ä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
Nach dem Login kopieren

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
);
Nach dem Login kopieren

(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;
Nach dem Login kopieren

(3) Schreiben Sie Testaussagen.

INSERT INTO tb_student(name,age) VALUES('Kevin',120);
Nach dem Login kopieren

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!

Verwandte Etiketten:
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage