文档解释
ORA-30504: system triggers cannot have a FOR EACH ROW clause
Cause: An attempt was made to use a FOR EACH ROW clause with a system trigger, but this type of trigger is not supported because a system triggers does not have a base table.
Action: Do not use a FOR EACH ROW clause with a system trigger.
?
这个错误消息表明用户试图创建一个系统触发器(存储在系统视图中),其中包括一个FOR EACH ROW子句。 FOR EACH ROW子句表示触发器将在每行插入、更新或删除时触发,但是系统触发器只能通过全部操作触发而不能为每行操作进行触发。
官方解释
“Oracle数据库引擎中的系统触发器是用于执行数据库管理功能的特殊触发器,不能拥有FOR EACH ROW子句。”
常见案例
当用户试图在系统触发器中使用FOR EACH ROW子句时,将收到此错误消息。
一般处理方法及步骤
1. 确保触发器定义中不包含FOR EACH ROW子句,因为系统触发器不能定义为每行执行。
2. 确保触发器定义不包含框架中要求不支持的任何特定PL/SQL代码。
3. 重试创建触发器语句,确保触发器定义满足特定系统触发器的要求。