0

UPDATES で NULLS を許可しないテーブルの列に制約を設定する方法はありますか? 挿入時に Null を許可する必要があります。

ありがとう

4

4 に答える 4

3

いいえ、トリガーまたはその他のメカニズムを使用して、ロジックを個別に処理する必要があります

于 2012-04-18T20:06:30.377 に答える
0

onupdate トリガーを使用してみましたか? トランザクション(tsql)を使用しているため、これが可能な解決策になるはずです。私の知る限り、チェック制約は更新クエリなどに限定することはできません。

于 2012-04-18T20:09:58.230 に答える
0

フィールドがNULLかどうかを確認するために更新をチェックするトリガーを試してみます。

于 2012-04-19T17:41:45.793 に答える
0
  1. 列を としてマークしますNOT NULL
  2. 値を追加しDEFAULTます。
  3. INSTEAD OF INSERT挿入されたヌルをデフォルト値に置き換えるトリガーを作成します。

これは、すべての要件を満たす必要があります。


CREATE TABLE Client
(
    ClientId int, 
    OptionalOnInsert int NOT NULL DEFAULT(0),
    Field1 int, 
    Field2 int
)
GO

CREATE TRIGGER TR_Client_InsteadOfInsert ON Client
INSTEAD OF INSERT
AS
    INSERT Client (ClientId, OptionalOnInsert, Field1, Field2)
    SELECT ClientId, OptionalOnInsert, Field1, Field2
    FROM INSERTED
    WHERE OptionalOnInsert is not null

    INSERT Client (ClientId, Field1, Field2)
    SELECT ClientId, Field1, Field2
    FROM INSERTED
    WHERE OptionalOnInsert is null
GO

-- Inserting NULL succeeds
INSERT Client (ClientId, OptionalOnInsert)
VALUES (1, NULL)

-- Updating to NULL fails
UPDATE Client
SET OptionalOnInsert = NULL
WHERE ClientId = 1
于 2012-04-18T21:55:57.810 に答える