[英]Alter the column default value for an existing column in SQL Server 2012
我有一个现有的列( ROLE
),其默认值需要从'zzzz'更新为'S' 。
我尝试使用以下查询,这显然不起作用:
ALTER TABLE [TRANSACTIONS] ALTER COLUMN [ROLE] ADD DEFAULT('S') ;
有人可以帮助您了解是否甚至可以更新列默认值,如果可以,那么如何?
谢谢
您需要删除并重新添加默认约束以指定其他值。
ALTER TABLE dbo.TRANSACTIONS DROP CONSTRAINT DF_TRANSACTIONS_ROLE;
ALTER TABLE dbo.TRANSACTIONS ADD CONSTRAINT DF_TRANSACTIONS_ROLE DEFAULT ('S') FOR [ROLE];
但是,由于没有显式命名约束(这是最佳实践),因此需要确定DROP
语句的现有约束名称:
SELECT name
FROM sys.default_constraints AS dc
WHERE
dc.parent_object_id = OBJECT_ID(N'dbo.TRANSACTIONS')
AND dc.parent_column_id = COLUMNPROPERTYEX(dc.parent_object_id, 'ROLE', 'ColumnID');
ALTER TABLE TRANSACTIONS DROP CONSTRAINT DF__TRANSACTIO__ROLE__48CFD27E;
ALTER TABLE TRANSACTIONS ADD DEFAULT('S') FOR ROLE
您需要查找当前默认约束的名称。 假设它名为DefaultConstraintName
,那么您将执行以下查询:
ALTER TABLE TRANSACTIONS DROP CONSTRAINT DefaultConstraintName;
GO
ALTER TABLE TRANSACTIONS ADD CONSTRAINT DF_TRANSACTIONS_ROLE DEFAULT ('S') FOR ROLE;
GO
由于您向我们展示了用于创建约束的代码,因此现有约束名称可能是由SQL Server在其名称中包含GUID的一部分生成的。 这不是一个好习惯,就像上面的代码示例中一样,给您的约束起个名字总是很不错的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.