在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
Run Code Online (Sandbox Code Playgroud)
但由于以前版本的数据库中的拼写错误,约束的名称可能是DF_SomeTable_ColName或DF_SmoeTable_ColName.
如何在没有任何SQL错误的情况下删除默认约束?默认约束名称不会显示在INFORMATION_SCHEMA表中,这会使事情变得有点棘手.
因此,类似于"删除此表/列中的默认约束"或"删除DF_SmoeTable_ColName",但如果无法找到它,则不会出现任何错误.
如何更改列以删除默认值?
该列创建时使用:
ALTER table sometable Add somecolumn nchar(1) NOT NULL DEFAULT 'N'
Run Code Online (Sandbox Code Playgroud)
然后改为:
alter table sometable alter column somecolumn nchar(1) null
Run Code Online (Sandbox Code Playgroud)
这允许空值,但默认值仍然存在.你怎么能删除它?