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


当前回答

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

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

其他回答

Use:

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

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

首先创建一个名为student的表:

CREATE TABLE STUDENT (STUDENT_ID INT NOT NULL)

向其中添加一列:

ALTER TABLE STUDENT 
ADD STUDENT_NAME INT NOT NULL DEFAULT(0)

SELECT * 
FROM STUDENT

将创建表,并使用默认值将列添加到现有表中。

ALTER TABLE tbl_table ADD int_column int NOT NULL DEFAULT(0)

从该查询中,可以添加一列默认值为0的数据类型整数。

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

ALTER TABLE <YOUR_TABLENAME>
ADD <YOUR_COLUMNNAME> <DATATYPE> <NULL|NOT NULL> 
ADD CONSTRAINT <CONSTRAINT_NAME>   ----OPTIONAL
DEFAULT <DEFAULT_VALUE>

如果您没有提供约束名称,那么SQLServer将使用默认名称。

示例:-

ALTER TABLE TEMP_TABLENAME
ADD COLUMN1 NUMERIC(10,0) NOT NULL
ADD CONSTRAINT ABCDE   ----OPTIONAL
DEFAULT (0)