2012-04-18 3 views
0

UPDATESにNULLを許可しないテーブルの列に制約を設定する方法はありますか?挿入時にヌルが許可される必要があります。UPDATEのSQL NULL制約のみ

おかげ

答えて

3

いいえ、あなたはトリガまたは

+0

hmmm。問題は私のERPシステムがデータベースの上に座っているだけで、制約エラーメッセージが表示されますが、エラーメッセージは表示されないということです。 – tdjfdjdj

0

は、あなたがにonUpdateトリガーを使用してみましたが、他の機構を別にロジックに対処する必要がありますか?トランザクション(tsql)を使用しているので、これが可能な解決策になるはずです。私が知る限り、チェックの制約は、例えば、クエリを更新します。

+0

はい。問題は私のERPシステムがデータベースの上に座っているだけで、制約エラーメッセージが表示されますが、エラーメッセージは表示されないということです。 – tdjfdjdj

0
  1. NOT NULLとマークします。
  2. DEFAULTの値を追加します。
  3. 挿入されたNULLを に置き換えるために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 
0

私はフィールドがNULLであるかどうかを確認するために、更新にチェックするトリガーをやってみます。