本文向您展示了如何使用AFTER DELETE TRIGGER
,它将在执行删除操作后AFTER DELETE TRIGGER
。 在现实生活中,它主要用于以下目的:
- 审核或记录
1.删除触发后
在这个例子中,如果用户已删除的行medical_bills
,被删除的行会被插入到medical_bills_history
通过上表删除触发器后medical_bills
1.1创建表并触发。
medical_bills
CREATE TABLE medical_bills
(
BILL_ID number(10) primary key,
BILL_NUMBER varchar2(20),
PARTY_NAME varchar2(50),
BILL_DATE date,
CREATED_BY varchar2(20),
CREATED_DATE date
);
medical_bills_history
CREATE TABLE medical_bills_history
(
BILL_ID number(10),
BILL_NUMBER varchar2(20),
PARTY_NAME varchar2(50),
BILL_DATE date,
DELETED_BY varchar2(20),
DELETED_DATE date
);
trg_after_delete_bill
CREATE OR REPLACE TRIGGER trg_after_delete_bill
AFTER DELETE
ON medical_bills
FOR EACH ROW
DECLARE
username varchar2(10);
BEGIN
-- current login user, in this example, system
SELECT user INTO username FROM dual;
-- Insert OLD values in history table with username of user performing delete and sysdate as deleted_Date.
INSERT INTO medical_bills_history VALUES(:OLD.BILL_ID,
:OLD.BILL_NUMBER,:OLD.PARTY_NAME,:OLD.BILL_DATE,username,sysdate);
END;
1.2插入数据进行测试。
INSERT INTO MEDICAL_BILLS values (1,'BILL101','Peter Thomas','12-MAY-2016','HR',sysdate);
INSERT INTO MEDICAL_BILLS values (2,'BILL102','Jemes Petil','10-JUN-2016','HR',sysdate);
INSERT INTO MEDICAL_BILLS values (3,'BILL103','Fujit su','10-JUL-2015','HR',sysdate);
1.3显示数据。
select * from MEDICAL_BILLS;
BILL_ID | BILL_NUMBER | PARTY_NAME | BILL_DATE | 由...制作 | 创建日期 |
---|---|---|---|---|---|
1个 | 票据101 | 彼得·托马斯 | 2016年5月12日 | 人力资源 | 2017年6月18日 |
2 | 票据102 | 杰姆斯·佩蒂尔 | 2016年6月10日 | 人力资源 | 2017年6月18日 |
3 | 票据103 | 苏 | 2015年7月10日 | 人力资源 | 2017年6月18日 |
select * from MEDICAL_BILLS_HISTORY;
-- no result
1.4从表MEDICAL_BILLS
删除一些行
DELETE FROM MEDICAL_BILLS WHERE bill_id = 1;
DELETE FROM MEDICAL_BILLS WHERE bill_id = 3;
1.5再次显示数据。
select * from MEDICAL_BILLS;
BILL_ID | BILL_NUMBER | PARTY_NAME | BILL_DATE | 由...制作 | 创建日期 |
---|---|---|---|---|---|
2 | 票据102 | 杰姆斯·佩蒂尔 | 2016年6月10日 | 人力资源 | 2017年6月18日 |
select * from MEDICAL_BILLS_HISTORY;
BILL_ID | BILL_NUMBER | PARTY_NAME | BILL_DATE | 由...制作 | 创建日期 |
---|---|---|---|---|---|
1个 | 票据101 | 彼得·托马斯 | 2016年5月12日 | 系统 | 2017年6月18日 |
3 | 票据103 | 苏 | 2015年7月10日 | 系统 | 2017年6月18日 |
参考文献
翻译自: https://mkyong.com/oracle/oracle-plsql-after-delete-trigger-example/