ИНОСТРАННЫЕ КЛЮЧЕВЫЕ ОГРАНИЧЕНИЯ ничего не обновлять. Они проверяют значения, записываемые в запись, и приводят к сбою записи, если вызывают сбой ограничения.
Кроме того, как @marc_s указывает в своем комментарии, триггеры в MS SQL Server устанавливаются на основе. Таблицы INSERTED
и DELETED
могут содержать несколько записей одновременно. Ваш код работает только для одной записи.
Вы можете попробовать что-то в этом роде ...
UPDATE
table
SET
VERSION_ID = inserted.VERSION_ID
FROM
table
INNER JOIN
deleted
ON table.VERSION_ID = deleted.VERSION_ID
AND table.APP_ID = deleted.APP_ID
INNER JOIN
inserted
ON deleted.PRIMARY_KEY = inserted.PRIMARY_KEY
EDIT
Я только что прочитал ваш комментарий и думаю, что понимаю. Требуется ограничение внешнего ключа с помощью ON UPDATE CASCADE
.
Этот формат используется для создания этого с помощью DDL.
ALTER TABLE DBO.<child table>
ADD CONSTRAINT <foreign key name> FOREIGN KEY <child column>
REFERENCES DBO.<parent table>(<parent column>)
{ON [DELETE|UPDATE] CASCADE}
Или вы можете просто настроить SQL Server Management Studio для его настройки. Просто убедитесь, что присутствует ОБНОВЛЕНИЕ КАСКАДА.