13

我的数据库中有一个列,当前定义为NOT NULL. 我想更新此列以允许NULLs.

我有以下脚本来执行此操作,但是我想先检查该列是否已经NULL(或NOT NULL),因为它之前可能已更改。

 ALTER TABLE [dbo].[aud]
 ALTER COLUMN [actname] nvarchar(50) NULL

任何帮助表示赞赏。

4

3 回答 3

11

使用COLUMNPROPERTY获取列属性。你可以写类似

SELECT COLUMNPROPERTY(OBJECT_ID('dbo.aud'),'actname','AllowsNull') AS 'AllowsNull';

欲了解更多信息,请访问此 链接

于 2013-06-17T13:56:27.543 回答
7
select is_nullable from sys.columns c inner join sys.tables t on
t.object_id = c.object_id where t.name = 'aud' and c.name = 'actname'

会给你一个BIT表示它是否可以为空。

所以你可以像这样打开这个

IF EXISTS(SELECT * from sys.columns c inner join sys.tables t on
    t.object_id = c.object_id where t.name = 'aud' and c.name = 'actname' AND
    is_nullable = 1)
    BEGIN
      --What to do if nullable
    END
ELSE
    BEGIN
      --What to do if not nullable
    END
END

这当然假设表和列完全存在......

于 2013-06-17T13:49:27.363 回答
3

实际上没有必要这样做,因为如果它已经是 Nullable,将列从 Nullable 更改为 Nullable 不会产生负面影响。

但是,您可以使用以下查询来做到这一点:

SELECT is_nullable 
FROM sys.columns 
WHERE object_id=object_id('YourTable') AND name = 'yourColumn'
于 2013-06-17T13:51:05.743 回答