首頁 > 軟體

Mysql中的觸發器定義與使用

2022-12-01 14:02:19

一、觸發器的介紹

觸發器是與表有關的資料庫物件,指在insert/update/delete 之前或之後,觸發並執行

觸發器中定義的SQL語句集合。觸發器的這種特性可以協助應用在資料庫端確保資料的

完整性,紀錄檔記錄,資料校驗等操作。

使用別名old和new來參照觸發器中發生變化的記錄內容,這與其它的資料庫是相似的。

現在觸發器還只支援行級觸發,不支援語句級觸發。

  觸發器型別                   new和old
 insert型觸發器        new表示將要揮著已經新增的資料
 update型觸發器        old表示修改之前的資料,new表示將要或者已經修改後的資料
 delete型觸發器        old表示將要或者已經刪除的資料

二、觸發器的語法

 語法:
   1:建立觸發器語句
   create trigger 觸發器名稱 before/after  insert/update/delete on 表名 for each row
    begin
      sql語句
    end;
   這裡的after和before表示的是增刪改之後還是之前觸發的
   2:檢視觸發器語句
     show triggers;
   3:刪除觸發器
     drop trigger 資料庫名.觸發器的名字;(如果沒有指定資料庫的名字,那麼預設是當前資料庫)

(1)insert觸發器

create table user_logs(
    opera_text varchar(1000) comment '插入的·內容',
    opera_time datetime comment '插入的時間',
    opera varchar(20) comment '操作的型別,insert/delete/update'
 );
create trigger tb_user_insert_tigger
    after insert on sp for each row
    begin
        insert into user_logs(opera_text, opera_time, opera)
        values(concat('插入的名字=',new.name,',插入的年齡=',new.age),now(),'insert');
    end;
show triggers;
insert into sp(age, name) values (100,'大魔王');

(2)update觸發器

create trigger tb_user_update_trigger
    after update on sp for each row
    begin
        insert into user_logs(opera_text, opera_time, opera) values
        (concat('更新前的名字=',old.name,' 更新前的年齡=',old.age,' 更新後的名字=',new.name,' 更新後的年齡=',new.age),now(),'update');
    end;
show triggers;
update sp set age=1000 where name='李四';

(3)delete觸發器

create trigger tb_user_delete_trigger
    after delete on sp for each row
    begin
        insert into user_logs(opera_text, opera_time, opera)
            values(concat('刪除的名字=',old.name,' 刪除前的年齡=',old.age),now(),'delete');
    end;
show triggers;
delete from sp where name='李四';

到此這篇關於Mysql中的觸發器定義與使用的文章就介紹到這了,更多相關MySQL觸發器內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com