具有默认约束的数据库列

时间:2013-08-30 10:47:31

标签: sql sql-server

我正在创建一个这样的数据库列:

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

执行上述SQL后,新列将添加到具有空值的表中。

这里constraint df_cloumnname没有意义吗?

请澄清这个..

1 个答案:

答案 0 :(得分:9)

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

如果您的列 NOT NULL ,则会立即应用默认约束。

如果您使用的是 SQL Server (您没有明确指定 - SQL查询语言 - 而不是数据库产品.. 。),并且您想要一个具有默认约束的可空列,并且您希望将值应用于现有行,请使用以下语法:

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

WITH VALUES添加到您的命令中,您应该得到所需的结果。