文档解释
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)后就可以创建正确的触发器了。
香港美国云服务器首选树叶云,2H2G首月10元开通。
树叶云(www.IDC.Net)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。
文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/276740.html<