使用生成的名称添加 DEFAULT 约束
Add DEFAULT constraint with a generated name
在 SQL 服务器中,我有一个现有的 table。现在我想向其中一列添加一个 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]
可以肯定的是,您可以将默认约束添加到现有列的唯一方法是命名它。
如果获得系统生成的名称对您来说很重要,您可以这样做:
- 更改 Table 添加具有未命名默认值的新列。
- 更新 Table,将新列的值设置为旧列的值。
- 删除旧列。
- 将新列重命名为旧列的名称。
我个人希望 SQL 服务器没有提供任何不命名约束的选项。我讨厌处理一些懒惰的开发人员留下的系统生成的名称。
您可以为现有列创建默认约束,而无需指定其名称,例如:
create table test
(
existing_column int
)
alter table test
add default 0 for existing_column
但是,有很多文章建议最好明确命名约束。因为很难删除或以其他方式更改系统命名的约束。此外,如果您有同一数据库的多个实例,则它们之间的默认名称将不相同。
在 SQL 服务器中,我有一个现有的 table。现在我想向其中一列添加一个 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]
可以肯定的是,您可以将默认约束添加到现有列的唯一方法是命名它。
如果获得系统生成的名称对您来说很重要,您可以这样做:
- 更改 Table 添加具有未命名默认值的新列。
- 更新 Table,将新列的值设置为旧列的值。
- 删除旧列。
- 将新列重命名为旧列的名称。
我个人希望 SQL 服务器没有提供任何不命名约束的选项。我讨厌处理一些懒惰的开发人员留下的系统生成的名称。
您可以为现有列创建默认约束,而无需指定其名称,例如:
create table test
(
existing_column int
)
alter table test
add default 0 for existing_column
但是,有很多文章建议最好明确命名约束。因为很难删除或以其他方式更改系统命名的约束。此外,如果您有同一数据库的多个实例,则它们之间的默认名称将不相同。