6

table1 というテーブルがあり、checkColumn という列があります。

今、フィールドcheckColumnにチェック制約を入れたいと思います。これは、いくつかの条件でテーブル2などの別のテーブルにあるデータのみを許可します。

こんな感じでやってみたのですが、

ALTER TABLE table1
ADD CHECK (checkColumn=(select field1 from table2 where field2='ABC') ) //the select is not scalar

しかし、チェック条件でサブクエリ文字列が許可されていないことに気付いたので、少し検索して、外部キー、トリガー、またはその他を使用する必要があることを読みましたが、ここでそれらの例を実装する方法を本当に理解していませんでした、これを別の質問として投稿してください。

4

1 に答える 1

7

残念ながら、チェック制約のコンテキストにサブクエリを挿入することはできません。しかし、ここで提案したいと思います. 任意のトリガーまたは関数を使用できます. 外部キー制約を使用してデータの依存関係をチェックできます. 関数で1つの例を共有したいと思います. 例えば

CREATE FUNCTION fn_Check_Rollnumber (
    @Rollnumber INT
)
RETURNS VARCHAR(10)
AS
BEGIN
    IF EXISTS (SELECT Rollnumber FROM Table_Student WHERE Rollnumber = @Rollnumber)
        return 'True'
    return 'False'
END

これで、次のようなチェックコンテキストでこの関数を使用できます。

ALTER TABLE Table_Fees 
    WITH CHECK ADD CONSTRAINT CK_RollCheck
    CHECK (fn_Check_Rollnumber(Rollnumber) = 'True')
于 2013-04-19T09:07:04.240 に答える