MySql中觸發器概述

2021-10-09 22:55:21 字數 3405 閱讀 9518

觸發器是乙個比較特殊事件,它的執行不是由程式呼叫或者手動呼叫,而是由相應的動作呼叫,例如對錶做的增刪改這些動作可以引起觸發器的發生。用來加強資料的完整性

例如乙個表記錄學生學生資訊,另乙個表記錄學生的總數,當記錄學生資訊表發生增或者刪,那麼學生總數就會改變,此時需要乙個觸發器來監聽學生表的記錄,當這個記錄發生改變時,通知記錄學生總數的表進行相應改變。

建立觸發器: create trigger 觸發器名字 before|after 出發事件(update,insert,delete)

on 表名 for each row

begin

觸發器程式體,就是需要執行的sql語句

end檢視觸發器: 1、show triggers\g

2、select * from information_schema.triggers\g

select * from information_schema.triggers where trigger_name=『觸發器名字』\g (觸發器儲存在資料庫information_schema的表triggers)

刪除觸發器: drop trigger 觸發器名稱

案例:建立表tab1

create table tab1(

id int primary key auto_increment,

name varchar(50),

*** enum(『m』,『f』),

age int

);建立表tab2

create table tab2(

id int primary key auto_increment,

name varchar(50),

salary double(10,2)

);觸發器 tab1_trigger_tab2 當tab1中資料刪除時,對應tab2中資料也刪除,當tab1中增加一條資料,tab2也增加一條對應的

建立insert的觸發器:

mysql> \d mys

ql

>cr

eate

trig

gert

ab1i

nser

ttab

2aft

erin

sert

−>on

tab1

fore

achr

ow

−>be

gin−

>in

sert

into

tab2

(nam

e,sa

lary

)val

ues(

new.

name

,3000);

−>en

dmysql> create trigger tab1_insert_tab2 after insert -> on tab1 for each row -> begin -> insert into tab2 (name,salary) values(new.name,3000); -> end

mysq

l>cr

eate

trig

gert

ab1i

​nse

rtt​

ab2a

fter

inse

rt−>on

tab1

fore

achr

ow−>be

gin−

>in

sert

into

tab2

(nam

e,sa

lary

)val

ues(

new.

name

,300

0);−

>en

dquery ok, 0 rows affected (0.01 sec)

mysql> \d ;

tab1表中插入一條資料:

mysql> insert into tab1 values(1,『zhangsan』,『m』,27);

query ok, 1 row affected (0.01 sec)

查詢tab2中是否由資料

mysql> select * from tab2;

±—±---------±--------+

| id | name | salary |

±—±---------±--------+

| 1 | zhangsan | 3000.00 |

±—±---------±--------+

1 row in set (0.00 sec)

插入乙個delete的觸發事件:

mysql> \d mys

ql

>cr

eate

trig

gert

ab1d

elet

etab

2aft

erde

lete

−>on

tab1

fore

achr

ow

−>be

gin−

>de

lete

from

tab2

wher

enam

e=ol

d.na

me;−

>en

dmysql> create trigger tab1_delete_tab2 after delete -> on tab1 for each row -> begin -> delete from tab2 where name=old.name; -> end

mysq

l>cr

eate

trig

gert

ab1d

​ele

tet​

ab2a

fter

dele

te−>on

tab1

fore

achr

ow−>be

gin−

>de

lete

from

tab2

wher

enam

e=ol

d.na

me;−

>en

dquery ok, 0 rows affected (0.01 sec)

mysql> \d ;

刪除tab1中唯一一條資料:

mysql> delete from tab1 where id=1;

query ok, 1 row affected (0.00 sec)

檢視tab2中是否由資料

mysql> select * from tab2;

empty set (0.00 sec)

觸發器概述

觸發器是一種特殊的儲存過程,它在插入,刪除或修改特定表中的資料時觸發執行,它比資料庫本身標準的功能有更精細和更複雜的資料控制能力。資料庫觸發器有以下的作用 安全性。可以基於資料庫的值使使用者具有運算元據庫的某種權利。可以基於時間限制使用者的操作,例如不允許下班後和節假日修改資料庫資料。可以基於資料庫...

觸發器 mysql觸發器

觸發器是一種特殊的儲存過程,它在插入 刪除或修改特定表中的資料時觸發執行,它比資料庫本身標準的功能有更精細和更複雜的資料控制能力。和儲存過程一樣,很少使用。1 觸發器的作用 2 建立觸發器 建立測試環境 mysql create database test db query ok,1 row aff...

MySQL中觸發器

觸發器是與某個事件相關的特殊儲存過程,與儲存過程不同的是,儲存過程需要用 call 呼叫而出發器不需要使用call呼叫呼叫。也就是自己預先定義好了,當某個事件發生時,就會自動出發觸發器進行相關的操作。僅對 insert update delete 有效,對select無。trigger name 觸...