最近,我遇到一个
BEFORE INSERT OR UPDATE
表上的触发器。在这个触发器中,作者依赖于
INSERTING
和
UPDATING
功能(均返回A
BOOLEAN
的
DBMS_STANDARD
包来确定触发器是在插入之前还是在更新之前激发的。
例如:
CREATE OR REPLACE TRIGGER CUSTOMER_TRIGGER
BEFORE INSERT OR UPDATE ON CUSTOMER
FOR EACH ROW
BEGIN
IF INSERTING THEN
/* Some code */
END IF;
IF UPDATING THEN
/* Some other code */
END IF;
END;
是的,我知道可以编写两个单独的触发器来分别处理这两个事件。这不是问题的关键。
在对这些函数接收到的错误进行故障排除后,我们(从Oracle支持部门)收到一个字:“DBMS-U标准例程实际上并不打算由用户程序调用”。这是真的吗?
考虑到其他程序(如
RAISE_APPLICATION_ERROR
和
COMMIT
)通常在pl/sql代码中使用。