4

MicorosftSQLServerデータベーステーブルフィールドにNULLまたはNOTNULL制約があるかどうかをプログラムで判断する方法があるかどうかを教えてください。再実行しても安全なパッチを展開できるようにするために、これが必要です。だから私はこのようなもの(概念/擬似コード)を求めています:

IF (my_table COLUMN end_date HAS CONSTRAINT OF 'NOT NULL') ALTER TABLE my_table ALTER COLUMN end_date DATETIME NULL

したがって、my_table.end_dateがまだ変更されていない場合は、「NOTNULL」から「NULL」に変更したいと思います。角かっこ内の部分がどうあるべきかわかりません。

既存のフィールドや既存の外部キー制約などについてdbo.sysobjectsに問い合わせる方法は知っていますが(すでにいくつかのスレッドがあります)、NULL /NOTNULLフィールドを具体的にチェックする方法がわかりません。制約。どんな助けでも大歓迎です。

4

2 に答える 2

4

あなたは見ることができますINFORMATION_SCHEMA.COLUMNS

if (select IS_NULLABLE from INFORMATION_SCHEMA.COLUMNS 
    where TABLE_NAME='my_table' and COLUMN_NAME='end_date') = 'NO' 
begin
    ALTER TABLE my_table ALTER COLUMN end_date DATETIME NULL
end
于 2012-06-21T00:14:32.540 に答える
0

SQL Server 2005以降を使用している場合、NOT NULL制約があると、「NO」が返されます。

SELECT IS_NULLABLE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'tblName'
AND COLUMN_NAME = 'colName'
于 2012-06-21T00:21:37.303 に答える