2016-08-30 7 views
-1

テーブルの既存の列にnot nullの制約を追加したいとします。データをマージする操作をした後。私は、nullではない制約を追加するためにテーブルを変更したい。しかし、私は最初に、スクリプトを実行した後の部分でNotNULL制約の存在を最初に検証したいと思います。ファイルがエラーをスローします。では、どうすればいいのですか。sqlserverテーブルの列を変更して 'NULLでない'制約を追加する

私のような何か試してみたい:たぶん私はこれを正しく理解していないが、existanceをチェックする必要はありません

IF NOT EXISTs (Select.. ) 

BEGIN 

ALTER table .... 

END 
+0

http://stackoverflow.com/questions/2499332/how-to-check-if-a-constraint-exists-in-sql-server –

+0

この質問解決しますか?さらに助けが必要ですか?私に1つのヒントを許してください:この質問が解決された場合は、(最良の)回答の投票カウンタの下で受け入れ検査をチェックすることは、非常に親切です。これは、1)この問題を解決済みとマークします。2)フォロワーが最良の解決策を見つけるのをより簡単にします。3)回答者にポイントを払います。 15ポイントのボーダーを越えたので、あなたは - さらに - 寄付に投票するよう求められます。これは、ありがとうと言います。ハッピーコーディング! – Shnugo

答えて

0

を。テーブルの列をNOT NULLに何度も変更することができます。欠損値

UPDATE Test SET ID=3 WHERE SomeValue='Value NULL'; 
に補正するようにしている

CREATE TABLE Test(ID INT,SomeValue VARCHAR(100)); 
INSERT INTO Test VALUES(1,NULL),(2,'Value 2'),(NULL,'Value NULL'); 

--Ups、IDがNULLであってはならないが、これは誤り

--ALTER TABLE Test ALTER COLUMN ID INT NOT NULL; 

--firstをスロー:

これを試してみてください

- これまでの作品

ALTER TABLE Test ALTER COLUMN ID INT NOT NULL; 

- このステートメントを再度入力する必要はありません。 existanceをチェックする必要があります...

ALTER TABLE Test ALTER COLUMN ID INT NOT NULL; 

--cleanアップ

ません
GO 
DROP TABLE Test; 
0

あなたは、この目的のためにsys名前空間でビューを使用することができます。このようなもの。

select c.name,t.name,c.is_nullable 
from sys.all_columns c 
inner join sys.tables t on c.object_id=t.object_id 
where t.name = 'MyTable' and c.name = 'myCol'; 

、その後alter table ... alter column...

関連する問題