【发布时间】:2010-11-28 15:55:33
【问题描述】:
在 Microsoft SQL Server 中,我知道检查列是否存在默认约束并删除默认约束的查询是:
IF EXISTS(SELECT * FROM sysconstraints
WHERE id=OBJECT_ID('SomeTable')
AND COL_NAME(id,colid)='ColName'
AND OBJECTPROPERTY(constid, 'IsDefaultCnst')=1)
ALTER TABLE SomeTable DROP CONSTRAINT DF_SomeTable_ColName
但由于数据库以前版本的拼写错误,约束的名称可能是DF_SomeTable_ColName 或DF_SmoeTable_ColName。
如何删除默认约束而不出现任何 SQL 错误?默认约束名称不会出现在 INFORMATION_SCHEMA 表中,这让事情变得有点棘手。
因此,类似“删除此表/列中的默认约束”或“删除DF_SmoeTable_ColName”之类的内容,但如果找不到,请不要给出任何错误。
【问题讨论】:
-
我不精通SQL Server,你知道约束的名字后能重命名吗? Oracle 中的“Alter table sometable rename constraint xxx to yyy”。
标签: sql sql-server tsql