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

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

WBOY
リリース: 2023-08-27 14:37:09
転載
1151 人が閲覧しました

如何使用 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 までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート