【发布时间】:2014-10-31 12:38:01
【问题描述】:
我正在尝试重新创建最近被删除的外键约束,而 SQL Server 不允许我这样做。这是 SQL Server Management Studio 给我的 DDL:
/* To prevent any potential data loss issues, you should review this script in detail before running it outside the context of the database designer.*/
BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
COMMIT
BEGIN TRANSACTION
GO
ALTER TABLE dbo.CleansingOperations SET (LOCK_ESCALATION = TABLE)
GO
COMMIT
BEGIN TRANSACTION
GO
ALTER TABLE dbo.CleansedData ADD CONSTRAINT
FK_CleansedData_CleansingOperations FOREIGN KEY
(
CleansedOperationID
) REFERENCES dbo.CleansingOperations
(
CleansingOperationID
) ON UPDATE NO ACTION
ON DELETE NO ACTION
GO
ALTER TABLE dbo.CleansedData SET (LOCK_ESCALATION = TABLE)
GO
COMMIT
这是我运行它时遇到的错误:
消息 547,第 16 级,状态 0,第 1 行
ALTER TABLE 语句与 FOREIGN KEY 约束“FK_CleansedData_CleansingOperations”冲突。冲突发生在数据库“NetVis203”、表“dbo.CleansingOperations”、列“CleansingOperationID”中。消息 3902,第 16 级,状态 1,第 1 行
COMMIT TRANSACTION 请求没有对应的 BEGIN TRANSACTION。
这一切是什么意思?据我所知,这是说约束与自身“冲突”!
【问题讨论】:
标签: sql-server