我想通过查询删除一些约束以更新我的字段并再次添加约束。我使用“ 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]