我正在尝试创建一个脚本,以便在SQL Express 2008 R2中创建一个表,如下所示:
IF (EXISTS (SELECT * FROM sys.tables WHERE name='Table' AND [type]='U')) BEGIN
DROP TABLE Table
END
GO
CREATE TABLE Table (
col DATETIMEOFFSET CONSTRAINT DF_Table_col DEFAULT GETUTCDATE()
)
GO
我正在尝试按照创建脚本的做法,该脚本可以在我的项目的此发布周期中重新执行。 但问题是我忘记在删除表“Table”之前删除默认约束DF_Table_col,我将其写为:
IF (EXISTS (SELECT * FROM sys.default_constraints WHERE name='DF_Table_col')) BEGIN
ALTER TABLE Table DROP CONSTRAINT DF_Table_col
END
GO
现在,如果我尝试重新运行脚本,我会收到以下错误:
Msg 2714, Level 16, State 5, Line 1
There is already an object named 'DF_Table_col' in the database.
Msg 1750, Level 16, State 0, Line 1
Could not create constraint. See previous errors.
如何摆脱孤立约束DF_Table_col?
我试图将这个孤儿绑定到一个同名的新表中,如下所示:
exec sp_bindefault 'DF_Table_col', 'Table.col'
但是它给了我以下错误:
Msg 15050, Level 11, State 1, Procedure sp_bindefault, Line 108
Cannot bind default 'DF_Table_col'. The default must be created using the CREATE DEFAULT statement.
答案 0 :(得分:1)
如果删除'Table'并且它属于'Table',则DF_Table_col将被删除,可能有'DF_Table_col'。在另一张桌子上。
如果您不关心可以使用的名称
CREATE TABLE Table (
col DATETIMEOFFSET DEFAULT GETUTCDATE()
)
GO