Heim  >  Artikel  >  Datenbank  >  Wie simuliere ich CHECK CONSTRAINT mit VIEWS?

Wie simuliere ich CHECK CONSTRAINT mit VIEWS?

WBOY
WBOYnach vorne
2023-08-27 14:37:091146Durchsuche

如何使用 VIEWS 来模拟 CHECK CONSTRAINT?

Wie wir alle wissen, unterstützt MySQL Fremdschlüssel für die referenzielle Integrität, unterstützt jedoch keine CHECK-Einschränkungen. Aber wir können sie simulieren, indem wir Trigger verwenden. Dieses Problem kann mithilfe des folgenden Beispiels behoben werden:

Beispiel

Angenommen, wir haben eine Tabelle mit dem Namen „car1“. Die Syntax der Registrierungsnummer besteht aus zwei Buchstaben, einem Bindestrich, drei Ziffern, einem Bindestrich, zwei Buchstaben wie folgt -

mysql> Create table car1 (number char(9));
Query OK, 0 rows affected (0.32 sec)

mysql> Insert into car1 values('AB-235-YZ');
Query OK, 1 row affected (0.10 sec)

Der obige Wert ist gültig, aber was ist mit dem Wert, den wir in die nächste Abfrage einfügen möchten?

mysql> insert into car1 values('AB-2X5-YZ');
Query OK, 1 row affected (0.04 sec)

Der obige Wert ist kein gültiger Wert, da er ein Zeichen zwischen Zahlen enthält, was gegen die von uns verwendete feste Syntax verstößt.

Ansicht erstellen, um CHECK CONSTRAINT zu simulieren, um Werte einzufügen und zu aktualisieren -

mysql> Create view car_invalid_check as
    -> Select * from car1 WHERE number rlike '^[[:alpha:]]{2}-[[:digit:]]{3}-[[:alpha:]]{2}$'
    -> with check option;
Query OK, 0 rows affected (0.12 sec)

mysql> Insert into car_invalid_check values('AB-2X5-YZ');
ERROR 1369 (HY000): CHECK OPTION failed 'query.car_invalid_check'

mysql> Insert into car_invalid_check values('AB-235-YZ');
Query OK, 1 row affected (0.09 sec)

mysql> Update car_invalid_check SET NUMBER = 'AB-2X5-ZT';
ERROR 1369 (HY000): CHECK OPTION failed 'query.car_invalid_check'

Das obige ist der detaillierte Inhalt vonWie simuliere ich CHECK CONSTRAINT mit VIEWS?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen