ホームページ  >  記事  >  データベース  >  mysqlチェック制約の書き方

mysqlチェック制約の書き方

(*-*)浩
(*-*)浩オリジナル
2019-05-10 11:49:0113951ブラウズ

MySQL チェック制約 (CHECK) は、CREATE TABLE または ALTER TABLE ステートメントを通じて実装でき、ユーザーの実際の整合性要件に従って定義されます。列またはテーブルに個別に CHECK 制約を適用できます。ただし、mysql マニュアルには、「すべてのストレージ エンジンは CHECK 句を分析しますが、CHECK 句は無視します。」と非常に明確に書かれているため、このように書くことはできますが、制限的な効果はありません。

推奨チュートリアル: MySQL チュートリアル

mysqlチェック制約の書き方

CHECK キーワードを使用して制約を確認します。具体的な構文形式は次のとおりです:

CHECK <表达式>

ここで: は、チェックする必要がある条件を指定するために使用される SQL 式を指します。
CHECK 制約句がテーブル内の列の定義の後に配置される場合、この制約は列ベースの CHECK 制約とも呼ばれます。
テーブル データを更新するとき、システムは更新されたデータ行が CHECK 制約の制約を満たしているかどうかをチェックします。 MySQL では、単純な式を使用して CHECK 制約を実装できます。また、修飾条件にサブクエリを追加するなど、修飾条件として複雑な式を使用することもできます。

注: CHECK 制約句がすべての列の定義、主キー制約および外部キー定義の後に配置される場合、この制約はテーブルベースの CHECK 制約とも呼ばれます。この制約により、テーブル内の複数の列に同時に条件を設定できます。

テーブル作成時にチェック制約を設定する

テーブル作成時にチェック制約を設定するための構文規則は次のとおりです。

CHECK(<检查约束>)

tb_emp7 データを作成するtest_db データベース テーブルでは、salary フィールドの値は 0 より大きく 10000 未満である必要があります。入力 SQL ステートメントと実行結果は次のとおりです。

mysql> CREATE TABLE tb_emp7
-> (
   -> id INT(11) PRIMARY KEY,
   -> name VARCHAR(25),
   -> deptId INT(11),
   -> salary FLOAT,
   -> CHECK(salary>0 AND salary<100),
   -> FOREIGN KEY(deptId) REFERENCES tb_dept1(id)
   -> );
Query OK, 0 rows affected (0.37 sec)

テーブル変更時にチェック制約を追加する

テーブル変更時にチェック制約を設定するための構文規則は次のとおりです。 tb_dept データ テーブル、要件 id フィールドの値は 0 より大きい。入力 SQL ステートメントと実行結果は次のとおりです。

ALTER TABLE tb_emp7 ADD CONSTRAINT <检查约束名> CHECK(<检查约束>)

解決策: トリガーを使用して、CHECK チェック制約関数を実装します。

(1) tb_student(学生情報テーブル)を作成します。

mysql> ALTER TABLE tb_emp7
   -> ADD CONSTRAINT check_id
   -> CHECK(id>0);
Query OK, 0 rows affected (0.19 sec)
Records: 0  Duplicates: 0  Warnings: 0

(2) age (年齢) フィールドが有効かどうかを確認するトリガーを作成します。

-- 创建学生信息表
CREATE TABLE tb_student
(
   	id INT AUTO_INCREMENT PRIMARY KEY,
   	name VARCHAR(30),
   	age INT NOT NULL
);

(3) テストステートメントを作成します。

rree

以上がmysqlチェック制約の書き方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。