Oracle PL / SQL –删除触发器之后的示例

本文向您展示了如何使用AFTER DELETE TRIGGER ,它将在执行删除操作后AFTER DELETE TRIGGER 。 在现实生活中,它主要用于以下目的:

  1. 审核或记录

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日

参考文献

  1. 创建DML触发器:示例
  2. PL / SQL触发器:-Oracle官方文档
  3. Oracle PL / SQL –删除触发器之前的示例

翻译自: https://mkyong.com/oracle/oracle-plsql-after-delete-trigger-example/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值