如何将具有默认值的列添加到SQL Server 2000/SQL Server 2005中的现有表中?


当前回答

ALTER TABLE Protocols
ADD ProtocolTypeID int NOT NULL DEFAULT(1)
GO

DEFAULT的包含使用默认值填充现有行中的列,因此不违反NOT NULL约束。

其他回答

在SQL Server 2008-R2中,我进入设计模式(在测试数据库中),使用设计器添加我的两列,并使用GUI进行设置,然后臭名昭著的右键单击提供了“生成更改脚本”选项!

突然弹出一个小窗口,你猜到了,里面有格式正确的保证可以工作的更改脚本。按下简易按钮。

IF NOT EXISTS (
    SELECT * FROM INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_NAME ='TABLENAME' AND COLUMN_NAME = 'COLUMNNAME'
)
BEGIN
    ALTER TABLE TABLENAME ADD COLUMNNAME Nvarchar(MAX) Not Null default
END

当要添加的列具有NOT NULL约束,但没有DEFAULT约束(值)时,请注意。在这种情况下,如果表中有任何行,ALTER TABLE语句将失败。解决方案是从新列中删除NOT NULL约束,或为其提供DEFAULT约束。

添加可为空的列时,WITH VALUES将确保将特定的DEFAULT值应用于现有行:

ALTER TABLE table
ADD column BIT     -- Demonstration with NULL-able column added
CONSTRAINT Constraint_name DEFAULT 0 WITH VALUES

SQL Server+更改表+添加列+默认值uniqueidentifier。。。

ALTER TABLE [TABLENAME] ADD MyNewColumn INT not null default 0 GO