ORA-32576: missing TYPE keyword

文档解释

ORA-32576: missing TYPE keyword

Cause: keyword TYPE is missing.

Action: Use TYPE keyword.

ORA-32576:缺少TYPE关键字

官方解释

更新会引发ORA-32576错误的原因是触发器定义缺少“TYPE”关键字,更新只能由表级触发器来响应,语法应该是:

CREATE [OR REPLACE] TRIGGER trigger_name

{BEFORE | AFTER | INSTEAD OF}

{INSERT [OR] | UPDATE [OR] | DELETE}

ON table_name

[REFERENCING OLD AS o NEW AS n]

[FOR EACH ROW]

WHEN (condition)

TYPE {ROW | STATEMENT}

[ORDER integer]

[ENABLE | DISABLE]

[FOLLOWS | PRECEDES another_trigger]

{CALL proc_name |

DECLARE

var_name datatype;

[BEGIN

executable_statements;

END; ]

}

常见案例

当您尝试创建表级触发器时,您可能会遇到以下错误(Oracle触发器):

SQL> CREATE OR REPLACE TRIGGER trigger_name

2 BEFORE INSERT OR UPDATE

3 ON table_name

4 REFERENCING OLD AS o NEW AS n

5 FOR EACH ROW

6 WHEN (condition)

7 BEGIN

8 null;

9 END;

ERROR at line 6:

ORA-32576: missing TYPE keyword

一般处理方法及步骤

要解决这个错误,需要补充关键字“TYPE”到触发器定义中,语法应该是:

CREATE [OR REPLACE] TRIGGER trigger_name

{BEFORE | AFTER | INSTEAD OF}

{INSERT [OR] | UPDATE [OR] | DELETE}

ON table_name

[REFERENCING OLD AS o NEW AS n]

[FOR EACH ROW]

WHEN (condition)

TYPE {ROW | STATEMENT}

[ORDER integer]

[ENABLE | DISABLE]

[FOLLOWS | PRECEDES another_trigger]

{CALL proc_name |

DECLARE

var_name datatype;

[BEGIN

executable_statements;

END; ]

};

这里,TYPE紧跟WHEN指令之后,它指定触发器的类型,可为“ROW”(行触发器)或“STATEMENT”(SQL语句触发器)。因此,在上面的示例中,添加TYPE ROW(或TYPE STATEMENT)后就可以创建正确的触发器了。

你可能感兴趣的