插入列,如果它不存在

时间:2017-12-05 15:51:06

标签: sql sql-server

我想在我的数据库中插入一个新列,如果它没有先前插入的话 我的专栏看起来像这样

ALTER TABLE dbo.tSafeUnit ADD HasAccess24_7 tinyint not null default 0

我希望只有当列不在表

中时才插入列

我的代码行只插入它但不检查它是否存在

4 个答案:

答案 0 :(得分:2)

你可以试试这个。

IF NOT EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME = 'HasAccess24_7' AND TABLE_NAME = 'tSafeUnit')
   AND EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'tSafeUnit')
BEGIN
    ALTER TABLE dbo.tSafeUnit ADD HasAccess24_7 TINYINT NOT NULL DEFAULT 0
END

答案 1 :(得分:1)

试试这个:

IF (SELECT COUNT(*) FROM syscolumns WHERE name = 'HasAccess24_7'
AND OBJECT_NAME(object_id) = 'tSafeUnit') = 0
BEGIN
    ALTER TABLE dbo.tSafeUnit ADD HasAccess24_7 tinyint not null default 0
END

答案 2 :(得分:0)

如果您使用的是MS SQL服务器,则可以执行以下操作:

IF COL_LENGTH('tSafeUnit', 'HasAccess24_7') IS NULL
BEGIN
    ALTER TABLE dbo.tSafeUnit 
    ADD HasAccess24_7 tinyint not null default 0
END

答案 3 :(得分:-1)

测试在该模式中该表是否存在该列

if not exists ( select 1 
                from information_schema.columns 
                where table_schema = 'dbo' 
                and table_name = 'tSafeUnit' 
                and column_name = 'HasAccess24_7')
begin
    ALTER TABLE dbo.tSafeUnit ADD HasAccess24_7 TINYINT NOT NULL DEFAULT 0;
end