mysql,一起初學觸發器

2021-10-07 11:01:54 字數 3578 閱讀 4429

案例一:

create

table t_persons(

id int

primary

keyauto_increment

, username varchar(10

),age int

, *** char(1

));create

table t_courses(

id int

primary

keyauto_increment

, coursesname varchar(10

),personsid int);

alter

table t_courses add

column score int

;1.在表t_persons上建立insert觸發器,當學生插入後就給t_courses表插入

一條記錄(給這個新入學的學生分配課程)

delimiter $

create

trigger g_afterinsert_tpersons

after

insert

on t_persons for each row

begin

insert

into t_courses(coursesname,personsid,score)

values

('入學課程'

,new.id,

100)

;end $

insert

into t_persons(username,age,***)

values

('張三',18

,'男');

select

*from t_persons;

select

*from t_courses;

2.在表t_persons 上建立update觸發器,當學生資料更新後,判斷學生的姓名是否是特別關注,

如果是,那就把這個學生的成績更新為0;

delimiter $

create

trigger g_afterupdate_tpersons

after

update

on t_persons for each row

begin

if new.username=

'張三'

then

update t_courses set score=

90where new.id=t_courses.

`id`

;endif;

end $

update t_persons set ***=

'女'where id=1;

3.在表t_persons 上建立delete 觸發器,當學生記錄被刪除後,就刪除課程表中對應的學生課程記錄

delimiter $

create

trigger g_afterdelete_tpersons

after

delete

on t_persons for each row

begin

delete

from t_courses where t_courses.

`id`

=old.id;

end $

delete

from t_persons where id=1;

4.在表t_persons 上建立insert觸發,在學生記錄插入之前檢查資料是否符合規定

delimiter $

create

trigger g_beforeinsert_tpersons

before insert

on t_persons for each row

begin

if(new.age>

1000

)then

set new.age=

500;

endif

;end $

drop

trigger g_beforeinsert_tpersons;

insert

into t_persons(username,age,***)

values

('ajdkfa'

,10000

,'女');

select

*from t_persons;

案例二:

建立資料庫schools

create

database schools;

建立表users

create

table users(

id int

primary

keyauto_increment

, username varchar(10

),count_fan int

, count_follow int);

建立表logic

create

table logic(

id int

primary

keyauto_increment

, fan_uid int

, up_uid int);

create

table dynamics(

id int

primary

keyauto_increment

, uid int

, var varchar(20

),c_time datetime);

建立觸發器

delimiter $

create

trigger g_afterinsert_logic

after

insert

on logic for each row

begin

update users set count_fan=count_fan+

1where new.up_uid=users.

`id`

;update users set count_follow=count_follow+

1where new.fan_uid=users.

`id`

;insert

into dynamics(uid,var)

values

(new.fan_uid,

'關注了');

end $

使用該語句時,觸發了上述觸發器

insert

into logic(fan_uid,up_uid)

values(2

,1);

select

*from dynamics;

select

*from users;

select

*from dynamics;

insert

into users(username,count_fan,count_follow)

values

('up',0

,0),

('fan',0

,0);

觸發器 mysql觸發器

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

my sql 觸發器 mysql建立觸發器

首先,我們來了解一下什麼是觸發器,觸發器,就是在對一張表資料進行增 insert 刪 delete 改 update 的時候,為了保持資料的一致性,對別的表也要進行相應的資料修改。我們都知道mysql最後事務提交後,資料是會儲存到磁碟上的,那麼每次在insert,delete,update時候舊資料...

my sql 觸發器 MySQL檢視觸發器

檢視觸發器是指檢視資料庫中已經存在的觸發器的定義 狀態和語法資訊等。mysql 中檢視觸發器的方法包括 show triggers 語句和查詢 information schema 資料庫下的 triggers 資料表等。本節將詳細介紹這兩種檢視觸發器的方法。show triggers語句檢視觸發器...