当您尝试向表中插入数据时,您的spring存储库将出错。如果关联触发器中存在任何错误,则不会执行dml命令。 大多数情况下,我在plsql过程中使用dml进行insert,并使用get\u locked\u transaction()过程检查是否有任何资源正忙。 函数get\u locked\u transaction(p\u wip\u entity\u id in number,p\u production\u note\u number in number)返回boolean is row\u locked exception;pragma exception\u init(行锁定,-54);开始/cursor with nowait attribute/for cc in(select*from mytable where wip\u entity\u id=p\u wip\u entity\u id for update nowait)循环为空;末端回路;返回false;行锁定时异常,然后返回true;结束get\ U locked\事务;
2条答案
按热度按时间qncylg1j1#
我不知道SpringRepository,但我知道在—例如:oracle窗体、ApplicationExpress、报表—中,触发器错误会一直向上传播。在那种情况下一切都停止了。
假设我有一个表单并输入一些数据。数据库触发器触发并尝试执行它所做的任何操作,但失败了
raise_application_error
. 什么都没有完成,我在表单中看到一个错误,例如“ora-20001:我的自定义错误”。因此,我想你在Spring也会有同样的经历。毕竟,测试它不会花很多钱,对吧?如果我能的话我会的,但我不能自己做。
monwx1rj2#
当您尝试向表中插入数据时,您的spring存储库将出错。如果关联触发器中存在任何错误,则不会执行dml命令。
大多数情况下,我在plsql过程中使用dml进行insert,并使用get\u locked\u transaction()过程检查是否有任何资源正忙。
函数get\u locked\u transaction(p\u wip\u entity\u id in number,p\u production\u note\u number in number)返回boolean is row\u locked exception;pragma exception\u init(行锁定,-54);开始/cursor with nowait attribute/for cc in(select*from mytable where wip\u entity\u id=p\u wip\u entity\u id for update nowait)循环为空;末端回路;返回false;行锁定时异常,然后返回true;结束get\ U locked\事务;