案例一:
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語句檢視觸發器...