2015-04-28 78 views
0

当我在表X中插入一行时,它会触发另一个触发函数,将行插入另一个表Y.当触发这些触发器功能的插入操作失败时,触发器操作后会发生什么?

但是,如果第一次插入失败,那么其他触发器函数会发生什么?
这些触发功能是否起作用?
我想在触发之前询问这个吗?
如果X表中的before触发器在向表Y中插入行时失败,那么对表X中的插入是否工作?

+1

触发器是高度产品特定的。请编辑你的问题并为你的数据库系统添加一个标签(例如[tag:mysql],[tag:sql-server],[tag:oracle]等) –

+0

确定,我添加了postgresql标签... – cinfis

回答

0

触发器的任何操作都与引发触发器的语句在相同的事务中运行。如果“调用事务”被回滚,那么触发器所做的任何更改都会被回滚。

+0

谢谢你要回复...在X表上触发之前,我们使用另一种情况(在插入X表之前将行插入Y表),然后在X表上插入一个插入;如果触发之前将行插入Y表失败,如果在触发失败之前仍将应用插入X表中的操作? – cinfis

+0

第一个错误会中止事务并阻止任何后续触发器触发。 –

+0

好的再次感谢... – cinfis