Проверьте ограничение после обновления запроса - PullRequest
0 голосов
/ 26 июня 2018

Я хочу удалить ограничение по запросу, чтобы обновить поле и снова добавить ограничение. Я использую «ограничение nocheck», чтобы отключить, и «проверить ограничение», чтобы удалить и добавить. проверка не работает, но когда я использую проверку после обновления моего поля, она не работает. Как я могу это исправить?

Вот пример того, что я делаю:

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]
...