当表被截断时,如何创建将数据移动到另一个表的触发器

时间:2019-07-25 07:29:59

标签: oracle

我创建了触发器,但它不会将数据移动到另一个表

它成功创建了触发器。它还会截断表,但不会移动数据。

CREATE OR REPLACE TRIGGER test_trigger
BEFORE TRUNCATE ON SCHEMA
BEGIN
IF (ora_sysevent='TRUNCATE' and ora_dict_obj_name='testtab') THEN
INSERT INTO testtab2
SELECT name, id FROM testtab;
END IF;
END test_trigger;

1 个答案:

答案 0 :(得分:1)

在其他引用中,您的源表没有带引号的标识符,因此它将以大写形式存储在数据字典等中。Read more in the docs.这意味着您也需要将比较形式也大写:

and ora_dict_obj_name='TESTTAB'

不相关,但是插入语句列出目标列名称是一种好习惯:

INSERT INTO testtab2 (name, id)
SELECT name, id FROM testtab;