在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]
答案 0 :(得分:3)
您可以为现有列创建默认约束,而不指定其名称,例如:
create table test
(
existing_column int
)
alter table test
add default 0 for existing_column
但是,有很多文章,建议明确命名约束更好。因为它更难以丢弃或以其他方式改变系统命名的约束。此外,如果您有多个相同数据库的实例,则默认名称将不同。
答案 1 :(得分:1)
非常确定可以将默认约束添加到现有列的唯一方法是命名它。
如果获得系统生成的名称对您来说很重要,您可以这样做:
我个人希望SQL Server没有给出任何不命名约束的选项。我讨厌处理一些懒惰的开发人员留下的系统生成的名称。