Oracle Trigger Typical Examples

本文介绍了一个使用触发器实现的表A到表B的数据同步过程。通过创建一个触发器,当表A发生插入、更新或删除操作时,相应的操作会同步到表B中。示例包括了创建表、触发器的定义以及执行SQL语句来演示同步的效果。
  • Sync table A to Table B
CREATE TABLE A(ID INT, DESCRIPTION VARCHAR(10));
CREATE TABLE B(ID INT, DESCRIPTION VARCHAR(10));

CREATE OR REPLACE TRIGGER SYNC_A_TO_B 
AFTER 
INSERT OR
UPDATE OR
DELETE ON A
FOR EACH ROW --indicate that this is a row trigger, not table level trigger
BEGIN
  DBMS_OUTPUT.PUT_LINE(:NEW.ID || '-' || :NEW.DESCRIPTION);
  DBMS_OUTPUT.PUT_LINE(:OLD.ID || '-' || :OLD.DESCRIPTION);
  CASE
    WHEN INSERTING THEN 
      DBMS_OUTPUT.PUT_LINE('INSERTING');
      INSERT INTO B VALUES (:NEW.ID, :NEW.DESCRIPTION);
    WHEN UPDATING THEN
      DBMS_OUTPUT.PUT_LINE('UPDATING');
      UPDATE B SET B.DESCRIPTION = :NEW.DESCRIPTION WHERE B.ID = :NEW.ID;
    WHEN DELETING THEN
      DBMS_OUTPUT.PUT_LINE('DELETING');
      DELETE FROM B WHERE B.ID = :OLD.ID;
  END CASE;
END;
/

INSERT INTO A VALUES (1, 'A_TO_B');

SELECT * FROM A;
SELECT * FROM B;

UPDATE A SET A.DESCRIPTION = 'UPDATED' WHERE A.ID = 1;

SELECT * FROM A;
SELECT * FROM B;

DELETE FROM A WHERE A.ID = 1;

SELECT * FROM A;
SELECT * FROM B;

DROP TABLE A;
DROP TABLE B;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值