更新查询后检查约束

时间:2018-06-26 11:03:31

标签: sql sql-server-2008 sql-update foreign-keys constraints

我想通过查询删除一些约束以更新我的字段并再次添加约束。我使用“ nocheck约束”禁用和使用“ check约束”删除和添加。没有支票有效,但是在更新字段后使用支票不起作用。 我该如何解决?

以下是我的工作示例:

ALTER TABLE t NOCHECK CONSTRAINT [FK_a]
UPDATE t SET b+=10;    --b depends on FK_a
ALTER TABLE t CHECK CONSTRAINT [FK_a]

因为我使用nocheck,但出现错误:

  

UPDATE语句与FOREIGN KEY约束冲突   “ FK_a”。

除了使用检查并再次更新查询后出现此错误外,我没有其他错误,但是更新查询有效!

我使用drop和add获得相同的结果。为什么?

我的表脚本是:

CREATE TABLE t(
[b] [smallint] NOT NULL,
CONSTRAINT [PK_a] PRIMARY KEY CLUSTERED 
(
    [b] ASC,
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON, FILLFACTOR = 90) ON [PRIMARY]
) ON [PRIMARY]

ALTER TABLE t WITH NOCHECK ADD  CONSTRAINT [FK_a] FOREIGN KEY([b])
REFERENCES [t] ([b])
ON UPDATE CASCADE
ON DELETE CASCADE
ALTER TABLE t CHECK CONSTRAINT [FK_a]

0 个答案:

没有答案