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


当前回答

OFFLINE和ONLINE与如何在NDB群集表上执行ALTER表有关。NDBCluster支持使用MySQL NDBCluster7.3及更高版本中的ALGORITHM=INPLACE语法进行联机ALTERTABLE操作。NDBCluster还支持特定于NDB的旧语法,该语法使用ONLINE和OFFLINE关键字。这些关键字从MySQL NDB Cluster 7.3开始就被弃用;它们在MySQL NDB Cluster 7.4中继续受支持,但在NDB Cluster的未来版本中可能会被删除。

IGNORE涉及ALTER语句如何处理新添加约束UNIQUE的列中的重复值。如果未指定IGNORE,则ALTER将失败且不会应用。如果指定IGNORE,则保留所有重复行的第一行,删除重置并应用ALTER。

ALTER_SPECICATION将是您正在更改的内容。要添加、删除或修改的列或索引,或要对列应用的约束。

ALTER [ONLINE | OFFLINE] [IGNORE] TABLE tbl_name
       alter_specification [, alter_specification] ...

    alter_specification:
        ...
        ADD [COLUMN] (col_name column_definition,...)
        ...

Eg: ALTER TABLE table1 ADD COLUMN foo INT DEFAULT 0;

其他回答

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

试试这个

ALTER TABLE Product
ADD ProductID INT NOT NULL DEFAULT(1)
GO

这也可以在SSMS GUI中完成。我在下面显示了默认日期,但默认值当然可以是任何值。

将表放在设计视图中(右键单击对象中的表浏览器->设计)向表中添加列(或单击要更新的列,如果它已经存在)在下面的列财产中,在默认值或绑定字段中输入(getdate())或“abc”或0或任何您想要的值,如下图所示:

--Adding Value with Default Value
ALTER TABLE TestTable
ADD ThirdCol INT NOT NULL DEFAULT(0)
GO

Use:

ALTER TABLE {TABLENAME} 
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL} 
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}

参考:ALTER TABLE(Transact-SQL)(MSDN)