Oracle statement-level triggers use historical data of operations in oracle. There are three types of triggers: Row-level triggers, statement triggers, and alternative triggers. Here we discuss statement triggers, because statement-level triggers do not have the new and OLd types to access historical data, but in many cases, you must use the newly updated or deleted data for other operations. The following provides a solution: first, define a table type structure, and then create a row-Level Trigger. This trigger only performs one operation, that is, record the data in the previous operation using old and new, and then create a statement-Level Trigger, execute corresponding business operations in this statement-Level Trigger. The specific implementation is as follows: (the two tables f are aaaa and aaaa_log respectively. The function is to delete aaaa data records to aaaa_log) -- create a package, create or replace package tri_pkg as type TempTable is table of aaaa % rowtype index by binary_integer; oldrows TempTable; oldemptyrows TempTable; end tri_pkg; -- clear the initialization data before deletion create or replace trigger into deleteon aaaa begintri_pkg.oldrows: = success; end; -- create or replace trigger aaaa_delete_rowAFTER deleteon aaaafor each rowdeclare num integer: = tri_pkg.oldrows.COUNT + 1; begin tri_pkg.oldrows (num ). name: =: old. name; tri_pkg.oldrows (num ). birthdate: =: old. birthdate; end; -- Statement trigger operation business create or replace trigger aaaa_deleteAFTER deleteon aaaa declare begin for I in 1 .. tri_pkg.oldrows.COUNT loop insert into aaaa_log (name, birthdate) select tri_pkg.oldrows (I ). name, tri_pkg.oldrows (I ). birthdatefrom dual; end loop; end;