ホームページ >データベース >mysql チュートリアル >SQL Server チェック制約でサブクエリを使用するにはどうすればよいですか?

SQL Server チェック制約でサブクエリを使用するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-04 18:31:40298ブラウズ

How Can I Use Subqueries in SQL Server Check Constraints?

チェック制約でのサブクエリの使用

SQL Server 2008 R2 で、次のようなサブクエリを使用してチェック制約を定義しようとします。

ALTER TABLE Table1
WITH CHECK ADD CONSTRAINT CK_Code
CHECK (MyField in (Select Field From Table2))

この場合、サブクエリが許可されていないことを示すエラーが発生しますcontext.

代替解決策: スカラー関数

トリガーなしでこの検証を実現するには、サブクエリをカプセル化するスカラー関数を作成し、チェック制約内で使用できます。以下に例を示します。

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')

関数によって返されたスカラー値を特定の文字列 (例: 「True」) と照合することで、目的の検証が行われます。チェック制約内で直接サブクエリを必要とせずに適用されます。

以上がSQL Server チェック制約でサブクエリを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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