SQL語句(二十一) 觸發器(DML觸發器)

2022-02-27 14:04:11 字數 2692 閱讀 4954

定義:

在修改指定錶值的資料時執行的儲存過程.不同的是: 執行儲存過程要使用exec語句來呼叫,而觸發器的執行不需要使用exec語句來呼叫.

作用:

實現由主鍵和外來鍵所不能保證的複製的參照完整性和資料的一致性

他能夠對資料庫中的相關表進行級聯修改

提供比 check約束 更複雜的資料完整性,並自定義錯誤資訊。

分類:資料操作語言觸發器 dml

資料定義語言觸發器 ddl

5.25: 在employee表上建立乙個名為employee_deleted的觸發器,其功能: 當對表進行刪除時,首先檢查員工是否為 '人事部'員工,如果不是可以刪除,否則撤銷刪除並顯示'無法刪除'

create

trigger

employee_delete

ondepartment

after

delete

asbegin

declary

@xchar(10

)

select

@x= departmentname --

變數來自資料庫,用from

from

department

if (@x='

人事部') --

沒有就用變數

begin

print

'無法刪除

'rollback

--撤銷都是rollback

endend

--執行

delete

from department where sname =

'人事部

'

create

trigger

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

print

'無法刪除

'rollback

endend

create

trigger

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

create

trigger

employee_delete

onemployee

instead

ofdelete

asbegin

declare

@dpvarchar(50

)

select

@dp=

departmentname

from

department

if(@dp='

人事部'

)

begin

print

'無法刪除

'end

end

create

trigger

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,是指事先為某張表繫結一段 當表中的某些內容發生改變 增 刪 改 的時候,系統會自動觸發 並執行。觸發器包含三個要...