觸發器的簡單應用

來源:互聯網
上載者:User

觸發器的簡單應用 

     觸發器是一個特殊的預存程序。區別就是在於,預存程序需要去調用,而觸發器無需調用,在執行某些操作的時候,會自動執行。一般當表或者視圖執行 增,刪,改操作的時候,就會自動執行觸發器中的PL SQL 陳述式塊。還有一個區別, 建立觸發器是不帶參數的, 而預存程序可帶可不帶參數。

 

建立一個學生表:
CREATE TABLE xue_sheng( id integer, xing_ming varchar(25),xing_bie number, fen_shu number, b_id integer);

INSERT INTO xue_sheng VALUES(1,'ZhanSan',1,80,1);

INSERT INTO xue_sheng VALUES(2,'LiSi',1,90,2);

INSERT INTO xue_sheng VALUES(3,'ZhanHong',0,75,2);

INSERT INTO xue_sheng VALUES(4,'ChenXiaoMing',1,85,1);

建立一個班級表:
CREATE TABLE ban_ji( id integer , ban_ji varchar(25));

INSERT INTO ban_ji VALUES(1,'1-(1)');

INSERT INTO ban_ji VALUES(2,'1-(2)');


當刪除班級表的一個id , 那麼它會自動把學生表所屬的班級的學生也會刪除

SQL> CREATE OR REPLACE TRIGGER del_ban_id
  2  AFTER DELETE ON ban_ji
  3  FOR EACH ROW
  4  BEGIN
  5  DELETE FROM xue_sheng where b_id=:old.id;
  6  END;
  7  /


DELETE FROM ban_ji where id=2;

查看,檢查觸發器是否自動執行了
select * from ban_ji;
select * from xue_sheng;

執行刪除操作的時候, 建立一個 old記憶體表, old表和ban_ji表 結構完全一樣

所以上面的 old.id 可以理解成 ban_ji班級表的 id



SQL> CREATE OR REPLACE TRIGGER insert_ban_ji
  2  AFTER INSERT ON ban_ji
  3  FOR EACH ROW
  4  BEGIN
  5  INSERT INTO xue_sheng VALUES('5','test',0,83,:new.id);
  6  END;
  7  /

INSERT INTO ban_ji VALUES(3,'1-(3)');

查看,檢查觸發器是否自動執行了
select * from ban_ji;
select * from xue_sheng;

當插入資料時候,先插入到 new 表,new表和班級表結構也是一樣的。 然後在插入到 真正的表,
所以 new.id 和 ban_ji班級表id 對應的。


例如:我要更新班級表的班級id, 當然學生表的班級id也要同時更新

SQL> CREATE OR REPLACE TRIGGER update_ban_ji
  2  AFTER UPDATE ON ban_ji
  3  FOR EACH ROW
  4  BEGIN
  5  UPDATE xue_sheng SET b_id=:new.id WHERE b_id=:old.id;
  6  END;
  7  /

先查看一下原來2個表的資料
select * from xue_sheng;
select * from ban_ji;

然後更新班級表的id
UPDATE ban_ji SET id=8 WHERE id=1;

最後查看一下效果
select * from ban_ji;
select * from xue_sheng;

 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.