ホームページ >データベース >mysql チュートリアル >他のテーブルと比較してデータを検証するために、関数でチェック制約を強化するにはどうすればよいですか?
関数を利用してチェック制約を強化する
チェック制約の機能を強化すると、検証が必要な状況に代表されるように、課題が発生する場合があります。挿入中に別のテーブルに対してデータを照合します。このシナリオでサブクエリを使用すると、チェック制約定義内でそのような構成が禁止されていることを示唆するエラーがトリガーされます。
幸いなことに、チェック制約に課せられた制限を回避する代替アプローチが存在します。目的のクエリを組み込んでスカラー値を生成する関数を作成することで、クエリの機能をチェック制約に組み込むことができます。次のコード スニペットは、この手法を示しています。
CREATE FUNCTION myFunction ( @field DATATYPE(?) ) RETURNS VARCHAR(5) AS BEGIN IF EXISTS (SELECT* FROM Table2 WHERE MYFIELD = @field) return 'True' return 'False' END
この関数を適切に配置すると、次の構文を使用してチェック制約にシームレスに統合できます。
ALTER TABLE Table1 WITH CHECK ADD CONSTRAINT CK_Code CHECK (myFunction(MYFIELD) = 'True')
このアプローチを採用することで、では、チェック制約の機能を効果的に拡張し、外部テーブルに対してデータを検証し、トリガーに頼ることなく複雑なビジネス ルールを適用できるようにします。
以上が他のテーブルと比較してデータを検証するために、関数でチェック制約を強化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。