ホームページ  >  記事  >  データベース  >  VIEWS を使用して CHECK CONSTRAINT をシミュレートするにはどうすればよいですか?

VIEWS を使用して CHECK CONSTRAINT をシミュレートするにはどうすればよいですか?

WBOY
WBOY転載
2023-08-27 14:37:091097ブラウズ

如何使用 VIEWS 来模拟 CHECK CONSTRAINT?

ご存知のとおり、MySQL は参照整合性のための外部キーをサポートしていますが、CHECK 制約はサポートしていません。ただし、トリガーを使用してそれらをシミュレートすることはできます。この問題は、以下の例を使用して解決できます。

Example

「car1」という名前のテーブルがあるとします。構文登録番号は、2 つの文字、1 つのダッシュ、3 つの数字のようなものです。 、ダッシュ、2 文字、次のように -

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)

上記の値は有効ですが、次のクエリに挿入する値はどうなるでしょうか?

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

上記の値は、数値の間に文字が含まれているため、有効な値ではありません。これは、使用する固定構文に違反します。

値を挿入および更新するための CHECK CONSTRAINT をシミュレートするビューを作成します -

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'

以上がVIEWS を使用して CHECK CONSTRAINT をシミュレートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。