oracle表內資料不明原因被刪除,建立觸發器記錄刪除記錄情況
阿新 • • 發佈:2019-01-25
第一步
grant create table to username;
第二步
CREATE OR REPLACE TRIGGER "TESTLOST_LOSTDATA_TRIGGER" BEFORE DELETE ON TESTLOST FOR EACH ROW DECLARE sql_stmt VARCHAR2(1000); tcount NUMBER; PRAGMA AUTONOMOUS_TRANSACTION; BEGIN SELECT COUNT(1) INTO tcount FROM user_tables t WHERE t.table_name = UPPER('backtestlost'); IF tcount = 0 THEN sql_stmt := 'CREATE TABLE backtestlost AS SELECT * FROM testlost WHERE id=' || :old.id; DBMS_OUTPUT.PUT_LINE('table not exit:' || sql_stmt); EXECUTE IMMEDIATE sql_stmt; ELSIF tcount > 0 THEN sql_stmt := 'INSERT INTO backtestlost (SELECT * FROM testlost WHERE id =' || :old.id || ')'; DBMS_OUTPUT.PUT_LINE('table exit:' || sql_stmt); EXECUTE IMMEDIATE sql_stmt; COMMIT; ELSE DBMS_OUTPUT.PUT_LINE('no action'); END IF; END;