我正在通过直接连接表Document
对表RelatedDocuments
中的一个或多个行之间的关系进行建模:
-----------
|from| to |
-----------
| 1| 2|
| 1| 5|
| 7| 1|
-----------
但是,由于在我的用例中这些关系本质上是双向的(并且,鉴于这种情况,为便于通过JPA进行访问),我添加了一个触发器,该触发器在插入时“镜像”源于和两个之间的每个关系。
-----------
|from| to |
-----------
| 1| 2|
| 2| 1|
| 1| 5|
| 5| 1|
| 7| 1|
| 1| 7|
-----------
这使我可以轻松找到与{e1g}相关的所有Document
ID1。但是,由于
ORA-04091: table RELATEDDOCUMENTS is mutating, trigger/function may not see it
,非常正确地指示我正在尝试操纵触发触发器的表。有没有解决这个问题的好方法?特别是wrp /对我想要利用普通的JPA?
答案 0 :(得分:2)
您可以在compound trigger中进行这种操作,但是我认为最好的方法就是调整delete语句。如果要删除(1,2)关系,请执行以下操作:
delete from relateddocuments
where ( from = 1 and to = 2 )
or ( from = 2 and to = 1 );
这是编写存储过程来处理SQL的真正帮助。