INSTEAD OF INSERT视图触发器问题:更新基表后目标表未同步
问题原因与解决方案
你的触发器未生效的核心原因是:绑定在视图上的INSTEAD OF INSERT触发器,仅在直接向视图执行INSERT语句时才会触发。而你实际是向基础表test插入数据,视图testview只是被动同步基础表的数据,这个过程中视图本身并未发生INSERT操作,因此触发器不会被触发。
正确解决方案
将触发器创建在基础表test上,使用AFTER INSERT触发器,这样每次向test插入数据后,会自动同步数据到testDestination:
CREATE TRIGGER insertFromTestToDestination ON test AFTER INSERT AS BEGIN INSERT INTO testDestination (ID, Test) SELECT ID, Test FROM INSERTED END
补充说明
- 若后续需要同步
test表的更新、删除操作,可在test表上继续创建AFTER UPDATE、AFTER DELETE触发器,逻辑与上述类似。 - 若必须通过视图操作触发同步,需直接对视图执行
INSERT语句,而非操作基础表。
内容的提问来源于stack exchange,提问作者MulfordnSons
相关产品推荐
相关产品推荐

