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


当前回答

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

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

其他回答

ALTER TABLE ADD ColumnName {Column_Type} Constraint

MSDN文章ALTERTABLE(Transact-SQL)具有所有altertable语法。

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

如果默认值为Null,则:

在SQL Server中,打开目标表的树右键单击“列”==>新建列键入列“名称”,选择“类型”,然后选中“允许空值”复选框在菜单栏中,单击“保存”

完成!

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;
ALTER TABLE Protocols
ADD ProtocolTypeID int NOT NULL DEFAULT(1)
GO

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