在Oracle 11.2.0.4.0中的DROP COLUMN上调用的DDL触发器

时间:2015-09-24 23:21:32

标签: oracle triggers

如果您运行下面的代码片段,则在删除clumn时会调用表上的触发器,该clumn已在创建表后添加并具有默认值且未定义null。这是我只能在Oracle 11.2.0.4.0中重现但在11.2.0.3.0中不能重现的行为。有人请帮我这个吗?这是预期的行为吗?如何在不运行触发器的情况下删除列?

CREATE TABLE T (
    DESCRIPTION VARCHAR2(50)
);

INSERT INTO T (DESCRIPTION) VALUES ('asd');

COMMIT;

CREATE OR REPLACE TRIGGER BEFORE_T_U
    BEFORE UPDATE ON T
    REFERENCING OLD AS OLD NEW AS NEW
    FOR EACH ROW
BEGIN
    RAISE_APPLICATION_ERROR(-20003, 'This before update trigger should not be invoked!');
END BEFORE_T_U;
/

ALTER TABLE T ADD AMOUNT NUMBER DEFAULT 0 NOT NULL;

ALTER TABLE T DROP COLUMN AMOUNT;

0 个答案:

没有答案