使用生成的名称添加DEFAULT约束

时间:2016-01-29 14:25:19

标签: sql-server tsql constraints default-value

在SQL Server中,我有一个现有的表。现在我想在其中一列 - 中添加一个DEFAULT约束,而不必为其定义一个名称

-- generated name works fine when creating new column
ALTER TABLE [xyz]
ADD [newColumn] int NOT NULL DEFAULT 0

-- when adding a default value afterwards I seem to have to provide a name
ALTER TABLE [xyz]
ADD CONSTRAINT [iDontWantToPutANameHere] DEFAULT 0 FOR [existingColumn]

2 个答案:

答案 0 :(得分:3)

您可以为现有列创建默认约束,而不指定其名称,例如:

create table test
(
    existing_column int
)

alter table test
    add default 0 for existing_column

但是,有很多文章,建议明确命名约束更好。因为它更难以丢弃或以其他方式改变系统命名的约束。此外,如果您有多个相同数据库的实例,则默认名称将不同。

答案 1 :(得分:1)

非常确定可以将默认约束添加到现有列的唯一方法是命名它。

如果获得系统生成的名称对您来说很重要,您可以这样做:

  1. 更改表,添加具有未命名的DEFAULT值的新列。
  2. 更新表格,将新列的值设置为旧列的值。
  3. 放下旧栏。
  4. 将新列重命名为旧列的名称。
  5. 我个人希望SQL Server没有给出任何不命名约束的选项。我讨厌处理一些懒惰的开发人员留下的系统生成的名称。