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


当前回答

语法:

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

例子:

ALTER TABLE Admin_Master 
ADD Can_View_Password  BIT NULL 
CONSTRAINT DF_Admin_Master_Can_View_Password DEFAULT (1)
WITH VALUES 

其他回答

右键单击表名,然后单击“设计”,在最后一个列名下单击,然后输入“列名”、“数据类型”和“允许空值”。

然后在页面底部设置一个默认值或绑定:类似于“1”表示字符串或1表示int。

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

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

向表中添加新列:

ALTER TABLE [table]
ADD Column1 Datatype

例如

ALTER TABLE [test]
ADD ID Int

如果用户希望使其自动递增,则:

ALTER TABLE [test]
ADD ID Int IDENTITY(1,1) NOT NULL

好吧,我现在对我之前的回答做了一些修改。我注意到,没有一个答案提到“如果不存在”。因此,我将提供一个新的解决方案,因为我在改变表格时遇到了一些问题。

IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.columns WHERE table_name = 'TaskSheet' AND column_name = 'IsBilledToClient')
BEGIN
ALTER TABLE dbo.TaskSheet ADD
 IsBilledToClient bit NOT NULL DEFAULT ((1))
END
GO

这里TaskSheet是特定的表名,IsBilledToClient是要插入的新列,1是默认值。这意味着在新列中现有行的值是多少,因此将在那里自动设置一个值。然而,您可以像我使用BIT一样,根据自己的意愿更改列类型,所以我输入了默认值1。

我建议采用上述系统,因为我遇到了一个问题。那么问题出在哪里呢?问题是,如果表表中确实存在IsBilledToClient列,那么如果只执行下面给出的部分代码,则SQL server查询生成器中将出现错误。但如果它不存在,那么第一次执行时将不会出现错误。

ALTER TABLE {TABLENAME}
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL}
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
[WITH VALUES]

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

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