添加具有生成名称的 DEFAULT 约束

sla*_*dan 5 t-sql sql-server 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]
Run Code Online (Sandbox Code Playgroud)

i-o*_*one 6

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

create table test
(
    existing_column int
)

alter table test
    add default 0 for existing_column
Run Code Online (Sandbox Code Playgroud)

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