2013-08-30 136 views
4

我创建一个数据库列这样的数据库列:与默认约束

Alter table tablename 
add column columnname null 
add constraint df_columnname default 0 

上面的SQL执行后,新列被添加到表空值。

constraint df_cloumnname在这里没有意义吗?

在此请澄清..

回答

9

如果列是可空,然后用默认约束增加它没有影响 - 它可以为空,将保持空。这种情况下的DEFAULT CONSTRAINT仅适用于正在添加的新行(并且未明确指定列的值)。

如果您的列是NOT NULL,那么默认约束将立即应用。

如果您使用SQL服务器(没有指定不够清楚 - SQL查询语言 - 但不是一个数据库产品...),以及你想有一个空的列难熬默认约束和你想要的值被应用到现有行,请使用此语法:

ALTER TABLE dbo.tablename 
ADD columnname NULL 
    CONSTRAINT df_columnname DEFAULT 0 WITH VALUES 

添加WITH VALUES到你的命令,你应该得到期望的结果。

+0

是Marc..I使用MS Sql Server .. –

+0

@Avinash:那么你应该总是使用'sql-server'标签来解决你的问题。 –

+0

我没有站在,WITH值选项..可以请澄清..在我的数据库中,我有一个现有的表与数据库列可为空,也有默认constaint ..我很困惑!!! –