定義:5.25: 在employee表上建立乙個名為employee_deleted的觸發器,其功能: 當對表進行刪除時,首先檢查員工是否為 '人事部'員工,如果不是可以刪除,否則撤銷刪除並顯示'無法刪除'在修改指定錶值的資料時執行的儲存過程.不同的是: 執行儲存過程要使用exec語句來呼叫,而觸發器的執行不需要使用exec語句來呼叫.
作用:
實現由主鍵和外來鍵所不能保證的複製的參照完整性和資料的一致性
他能夠對資料庫中的相關表進行級聯修改
提供比 check約束 更複雜的資料完整性,並自定義錯誤資訊。
分類:資料操作語言觸發器 dml
資料定義語言觸發器 ddl
createtrigger
employee_delete
ondepartment
after
delete
asbegin
declary
@xchar(10
)
select
@x= departmentname --
變數來自資料庫,用from
from
department
if (@x='
人事部') --
沒有就用變數
begin
'無法刪除
'rollback
--撤銷都是rollback
endend
--執行
delete
from department where sname =
'人事部
'
createtrigger
employee_delete
onemployee
after
delete
asbegin
declare
@dpvarchar(50
)
select
@dp=
departmentname
from
department d1, deleted d2
where d1.departmentid =
d2.departmentid
if(@dp='
人事部'
)
begin
'無法刪除
'rollback
endend
createtrigger
employee_update
onstu_info
after
update
asbegin
declare
@stucount
intselect
@stucount
=count(*
)
from
stu_info
update
stu_sum
setnumber
=@stucount
select s_id as 更新前學生編號, s_name as
更新前學生姓名
from
deleted
select s_id as 更新後學生編號, s_name as
更新後學生姓名
from
inserted
end--
執行update
stu_info
set s_name ='張三
'where s_id =
1
createtrigger
employee_delete
onemployee
instead
ofdelete
asbegin
declare
@dpvarchar(50
)
select
@dp=
departmentname
from
department
if(@dp='
人事部'
)
begin
'無法刪除
'end
end
createtrigger
insert_forbidden
onstu_sum
after
insert
asbegin
raiserror('
不允許直接向該錶插入記錄, 操作被禁止
', 1, 1
)
rollback
transaction
end
遞迴觸發器
Mysql那些事兒之(十一)觸發器 二
比較after insert before insert after update before update觸發時間與事件 的觸發情況。建立表 create table film text id smallint auto increment,name varchar 40 txt text,pr...
mysql2008觸發器 SQL2008觸發器
首先來看一下觸發器的語法 use 資料庫名 goset ansi nulls on goset quoted identifier on go建立或修改 create alter trigger 觸發器名 最好以 x tr命名規範結尾 on表名 for 對於什麼操作觸發 insert,update,...
史上最簡單的 MySQL 教程(四十一) 觸發器
案例 網上購物,根據生產訂單的型別,商品的庫存量對應的進行增和減。此案例涉及兩張表,分別為訂單表和商品表,下單時,商品表庫存減少 退單時,商品表庫存增加。如何實現?觸發器 trigger,是指事先為某張表繫結一段 當表中的某些內容發生改變 增 刪 改 的時候,系統會自動觸發 並執行。觸發器包含三個要...