ご存知のとおり、MySQL は参照整合性のための外部キーをサポートしていますが、CHECK 制約はサポートしていません。ただし、トリガーを使用してそれらをシミュレートすることはできます。この問題は、以下の例を使用して解決できます。
「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 サイトの他の関連記事を参照してください。