我在表T1上有After Insert / Update触发器,它从T2获取Col1的参考数据并完成一些工作并将其插入另一个表中。 col1与表T2的FK相同。
当用户将不正确或不存在的值插入Col1时,如果触发器被禁用,我会收到约束错误。
但是当启用触发器并且用户在Col1中插入错误的值时,触发器将被触发并显示“未找到数据”错误消息。
实际上我期望该表抛出约束错误,但触发器抛出它。
请告诉我您对此触发行为的评论。
答案 0 :(得分:2)
您没有提到您是使用BEFORE还是AFTER触发器。请查看documentation的order of execution:
答案 1 :(得分:0)
我猜测触发器必须是BEFORE
触发器。它将在检查约束之前运行。如果触发器引发NO_DATA_FOUND
,则永远不会检查约束。如果触发器被禁用,则不会运行,因此会检查约束。