Neue Funktionen in MySQL 8.0 - Einführung in Check Constraints

Neue Funktionen in MySQL 8.0 - Einführung in Check Constraints

Vorwort

In MySQL 8.0 wurde eine sehr nützliche neue Funktion eingeführt: Check Constraints, die die Kontrolle über illegales oder unzulässiges Schreiben von Daten verbessern können. Sehen wir uns diese genauer an.

Einschränkungen prüfen

Erstellen, Löschen und Anzeigen

(1) Sie können beim Erstellen einer Tabelle Prüfbeschränkungen erstellen.

mysql> TABELLE ERSTELLEN t1
 -> (
 -> PRÜFEN (c1 <> c2),
 -> c1 INT-Prüfung (c1 > 10),
 -> c2 INT CONSTRAINT c2_positive PRÜFUNG (c2 > 0),
 -> c3 INT-Prüfung (c3 < 100),
 -> CONSTRAINT c1_nonzero CHECK (c1 <> 0),
 -> PRÜFEN (c1 > c3)
 -> );
Abfrage OK, 0 Zeilen betroffen (0,03 Sek.)

(2) Sie können auch Check-Constraints mit Hilfe der folgenden Anweisungen hinzufügen:

mysql> ALTER TABLE t1 ADD CONSTRAINT c3_nonzero CHECK ((c3<>0));
Abfrage OK, 0 Zeilen betroffen (0,16 Sek.)
Datensätze: 0 Duplikate: 0 Warnungen: 0

(3) Sie können die Check-Constraint-Funktion mit folgender Anweisung löschen

mysql> ALTER TABLE t1 DROP CONSTRAINT c3_nonzero;
Abfrage OK, 0 Zeilen betroffen (0,02 Sek.)
Datensätze: 0 Duplikate: 0 Warnungen: 0

(4) Sie können die Check Constraints einsehen, indem Sie die Tabellenstruktur abfragen

mysql> ANZEIGEN CREATE TABLE t1_G
*************************** 1. Reihe ***************************
 Tabelle: t1
Tabelle erstellen: CREATE TABLE `t1` (
 `c1` int DEFAULT NULL,
 `c2` int DEFAULT NULL,
 `c3` int DEFAULT NULL,
 Einschränkung `c1_nonzero` Prüfung ((`c1` <> 0)),
 Einschränkung `c2_positive` PRÜFUNG ((`c2` > 0)),
 EINSCHRÄNKUNG `t1_chk_1` PRÜFUNG ((`c1` <> `c2`)),
 Einschränkung `t1_chk_2` PRÜFUNG ((`c1` > 10)),
 Einschränkung `t1_chk_3` PRÜFUNG ((`c3` < 100)),
 EINSCHRÄNKUNG `t1_chk_4` PRÜFUNG ((`c1` > `c3`))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 Zeile im Satz (0,00 Sek.)

(5) Sie können es auch über die folgenden zwei Ansichten anzeigen: table_constraints fragt ab, welche Einschränkungen in der Tabelle vorhanden sind, und check_constraints fragt die spezifische Definition der Prüfbeschränkung ab.

mysql> SELECT * FROM information_schema.table_constraints WHERE table_name='t1';
+--------------------+----------------------------------+--------------+-------------+-----------------+----------+
| CONSTRAINT_CATALOG | CONSTRAINT_SCHEMA | CONSTRAINT_NAME | TABLE_SCHEMA | TABLE_NAME | CONSTRAINT_TYPE | ENFORCED |
+--------------------+----------------------------------+--------------+-------------+-----------------+----------+
| def | Test | c1_ungleich Null | Test | t1 | PRÜFEN | JA |
| def | Test | c2_positive | Test | t1 | PRÜFEN | JA |
| def | test | t1_chk_1 | test | t1 | PRÜFEN | JA |
| def | test | t1_chk_2 | test | t1 | PRÜFEN | JA |
| def | test | t1_chk_3 | test | t1 | PRÜFEN | JA |
| def | test | t1_chk_4 | test | t1 | PRÜFEN | JA |
+--------------------+----------------------------------+--------------+-------------+-----------------+----------+
6 Zeilen im Satz (0,00 Sek.)

mysql> SELECT * FROM information_schema.check_constraints WHERE constraint_name='c1_nonzero';
+--------------------+----------------------------------+--------------+
| CONSTRAINT_CATALOG | CONSTRAINT_SCHEMA | CONSTRAINT_NAME | CHECK_CLAUSE |
+--------------------+----------------------------------+--------------+
| def | test | c1_ungleich Null | (`c1` <> 0) |
+--------------------+----------------------------------+--------------+
1 Zeile im Satz (0,00 Sek.)

(6) Beim Einfügen von Daten, die die Prüfbedingung nicht erfüllen, wird direkt ein Fehler gemeldet

mysql> in t1-Werte (0,0,0) einfügen;
FEHLER 3819 (HY000): Die Prüfbedingung „c1_nonzero“ ist verletzt.

Limit

(1) Auto-Increment-Spalten und Spalten anderer Tabellen unterstützen keine Check Constraints

(2) Unsichere Funktionen wie CONNECTION_ID(), CURRENT_USER(), NOW() usw. unterstützen keine Prüfbeschränkungen.

(3) Benutzerdefinierte Funktionen unterstützen keine Prüfbeschränkungen

(4) Gespeicherte Prozeduren unterstützen keine Prüfbeschränkungen

(5) Variablen unterstützen keine Prüfbeschränkungen

(6) Unterabfragen unterstützen keine Prüfbeschränkungen

Zusammenfassen

Prüfbeschränkungen sind eine sehr gute Funktion, mit der sich eine Vielzahl von Datenüberprüfungsszenarien realisieren lässt. Sie können es ausprobieren.

Das Obige ist eine kurze Einführung in die neue Funktion von MySQL 8.0 – Check Constraints. Weitere Informationen zur neuen Funktion von MySQL 8.0 – Check Constraints – finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Erläuterung des MySQL-Nicht-Null-Einschränkungsfalls
  • MySQL-Fremdschlüsseleinschränkung (FOREIGN KEY) Fallerklärung
  • Zusammenfassung der MySQL-Fremdschlüsseleinschränkungen und Tabellenbeziehungen
  • MySQL-Integritätsbeschränkungen – Definition und Beispiel-Tutorial
  • Erstellen, Einschränkungen und Löschen von Fremdschlüsseln in MySQL
  • Beispielanweisungen für Indizes und Einschränkungen in MySQL
  • Beispielerklärung von MySQL-Fremdschlüsseleinschränkungen
  • Detaillierte Erläuterung der MySQL-Fremdschlüsseleinschränkungen
  • Detaillierte Erläuterung des Beispiels für MySQL-Integritätsbeschränkungen
  • MySQL-Einschränkungen - Super detaillierte Erklärung

<<:  docker run -v mountet Datenvolumes abnormal und der Containerstatus wird immer neu gestartet

>>:  Das rel-Attribut des HTML-Link-Tags

Artikel empfehlen

5 Punkte, auf die Sie beim Erstellen einer Webseite achten sollten

1. Farbabstimmungsproblem <br />Eine Webseit...

Detaillierte Erläuterung der sechs gängigen Einschränkungstypen in MySQL

Inhaltsverzeichnis Vorwort 1.nichtnull 2. einziga...

Zusammenfassung verschiedener Methoden zur JS-Datentyperkennung

Inhaltsverzeichnis Hintergrund Welche Methoden gi...

Schritte zum Anpassen des Symbols in Vue

ant-design-vue passt die Verwendung von Ali Iconf...

So lösen Sie das Problem zu vieler geöffneter Dateien in Linux

Die Ursache liegt darin, dass der Prozess zu eine...

So erstellen Sie eine Tabelle in MySQL und fügen Feldkommentare hinzu

Code und Beispiele direkt posten #Schreiben Sie K...

Detaillierte Analyse von Javascript-Datenproxys und Ereignissen

Inhaltsverzeichnis Datenbroker und Events Überprü...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.22 winx64

Das grafische Tutorial zur Installation und Konfi...

Stellen Sie IE8 so ein, dass Code im IE7-Stil verwendet wird

<meta http-equiv="x-ua-kompatibel" co...

Jmeter stellt eine Verbindung zum Datenbankprozessdiagramm her

1. Laden Sie den MySQL-JDBC-Treiber (mysql-connec...

So installieren und konfigurieren Sie MySQL 5.7.19 unter CentOS 6.5

Die detaillierten Schritte zur Installation von m...