文档解释
ORA-25017: cannot reference NEW ROWID for movable rows in before triggers
Cause: NEW ROWID was referenced in a before row trigger which is defined on an index-organized table, or a partitioned table with enabled movement of rows. The ROWID cannot be computed in a before row update trigger because it depends on the actual values of the row
Action: Remove references to NEW ROWID from the trigger definition.
ORA-25017: 不允许在before触发器中引用可移动行的NEW ROWID
官方解释
当在一个before触发器中查询系统表NEW,将会导致ora-25017错误。25017 代码表明,当在before触发器中使用系统表NEW时,未引用可移动行。
常见案例
当在before触发器中查询系统表NEW时,将导致ORA-25017错误。最可能在delete或update操作时发生,如果该表有before触发器,便可能导致该错误。
一般处理方法及步骤
1. 避免使用触发器,而是把相关逻辑放到应用层中。
2. 如果必须使用触发器,那么注意当在before触发器中不要引用可移动行的NEW ROWID。
3. 使用for each row模式时,可以使用:NEW.COLUMN,但是不能直接使用NEW ROWID,因为在不同的数据库操作系统中ROWID的存储方式不同。