MySQL 觸發器簡單例項

2021-06-26 21:53:25 字數 3330 閱讀 1924

~~語法~~
create 

trigger 

《觸發器名稱》  --觸發器必須有名字,最多64個字元,可能後面會附有分隔符.它和mysql中其他物件的命名方式基本相象.

--觸發器有執行的時間設定:可以設定為事件發生前或後。

--同樣也能設定觸發的事件:它們可以在執行insert、update或delete的過程中觸發。

on 《表名稱》  --觸發器是屬於某乙個表的:當在這個表上執行插入、 更新或刪除操作的時候就導致觸發器的啟用. 我們不能給同一張表的同乙個事件安排兩個觸發器。

for 

each 

row--觸發器的執行間隔:for each row子句通知觸發器 每隔一行執行一次動作,而不是對整個表執行一次。

《觸發器sql語句》  --觸發器包含所要觸發的sql語句:這裡的語句可以是任何合法的語句, 包括復合語句,但是這裡的語句受的限制和函式的一樣。

--你必須擁有相當大的許可權才能建立觸發器(create trigger),如果你已經是root使用者,那麼就足夠了。這跟sql的標準有所不同。

~~例項~~
建立表tab1

[sql]view plain

copy

print?

drop

table if exists tab1;  

create

table tab1(  

tab1_id varchar(11)  

);  

drop table if exists tab1;

create table tab1(

tab1_id varchar(11)

);

建立表tab2

[sql]view plain

copy

print?

drop

table if exists tab2;  

create

table tab2(  

tab2_id varchar(11)  

);  

drop table if exists tab2;

create table tab2(

tab2_id varchar(11)

);

建立觸發器:

t_afterinsert_on_tab1

作用:增加tab1表記錄後自動將記錄增加到tab2表中

[sql]view plain

copy

print?

drop

trigger if exists t_afterinsert_on_tab1;  

create

trigger t_afterinsert_on_tab1  

after

insert

on tab1  

for each row  

begin

insert

into tab2(tab2_id) values(new.tab1_id);  

end;  

drop trigger if exists t_afterinsert_on_tab1;

create trigger t_afterinsert_on_tab1

after insert on tab1

for each row

begin

insert into tab2(tab2_id) values(new.tab1_id);

end;

測試一下

[sql]view plain

copy

print?

insert

into tab1(tab1_id) values('0001');  

insert into tab1(tab1_id) values('0001');
看看結果

1select*fromtab1;

2select*fromtab2;

example2:

建立觸發器:t_afterdelete_on_tab1

作用:刪除tab1表記錄後自動將tab2表中對應的記錄刪去

[sql]view plain

copy

print?

drop

trigger if exists t_afterdelete_on_tab1;  

create

trigger t_afterdelete_on_tab1  

after

delete

on tab1  

for each row  

begin

delete

from tab2 where tab2_id=old.tab1_id;  

end;  

drop trigger if exists t_afterdelete_on_tab1;

create trigger t_afterdelete_on_tab1

after delete on tab1

for each row

begin

delete from tab2 where tab2_id=old.tab1_id;

end;

測試一下

[sql]view plain

copy

print?

delete

from tab1 where tab1_id='0001';  

delete from tab1 where tab1_id='0001';

看看結果

1select*fromtab1;

2select*fromtab2;

MySQL 觸發器簡單例項

mysql 觸發器簡單例項 語法 create trigger 觸發器名稱 觸發器必須有名字,最多64個字元,可能後面會附有分隔符.它和mysql中其他物件的命名方式基本相象.觸發器有執行的時間設定 可以設定為事件發生前或後。同樣也能設定觸發的事件 它們可以在執行insert update或dele...

MySQL 觸發器簡單例項

語法 create trigger 觸發器名稱 觸發器必須有名字,最多64個字元,可能後面會附有分隔符.它和mysql中其他物件的命名方式基本相象.觸發器有執行的時間設定 可以設定為事件發生前或後。同樣也能設定觸發的事件 它們可以在執行insert update或delete的過程中觸發。on 表名...

MySQL觸發器簡單例項

首先貼上觸發器語法吧 create trigger 觸發器名稱 觸發器必須有名字,最多64個字元,可能後面會附有分隔符,它和mysql中其他物件的命名方式基本相象。觸發器有執行的時間設定 可以設定為事件發生前或後。同樣也能設定觸發的事件 它們可以在執行insert update或delete的過程中...