(八)MySQL學習筆記 觸發器

2021-10-21 22:57:12 字數 3055 閱讀 9936

觸發器有三種:

觸發器型別

old的含義

new的含義

insert 型觸發器

無 (因為插入前狀態無資料)

new 表示將要或者已經新增的資料

update 型觸發器

old 表示修改之前的資料

new 表示將要或已經修改後的資料

delete 型觸發器

old 表示將要或者已經刪除的資料

無 (因為刪除後狀態無資料)

-- 建立觸發器標準語法

delimiter $

create

trigger 觸發器名稱

before|

after

insert

|update

|delete

on 表名

[for each row

]-- 行級觸發器

begin

觸發器要執行的功能;

end$

delimiter

;

create

database db9;

use db9;

-- 建立賬戶表account

create

table account(

id int

primary

keyauto_increment

, name varchar(20

),money double);

-- 插入資料

insert

into account values

(null

,'小王'

,3000),

(null

,'小劉'

,4000),

(null

,'小李'

,6000),

(null

,'小孫'

,2000);

-- 建立日誌表

create

table account_log(

id int

primary

keyauto_increment

,-- 主鍵id

operation varchar(20

),-- 操作型別(insert?update?delete?)

operation_time datetime

,-- 操作時間

operation_id int

,-- 操作表中的id

operation_params varchar

(200

)-- 操作引數

);

-- 建立insert型觸發器

delimiter $

create

trigger account_insert

after

insert

on account

for each row

begin

insert

into account_log values

(null

,'insert'

,now()

,new.id,concat(

'插入後'))

;end $

delimiter

;-- 測試

insert

into account values

(null

,'阿彪'

,888);

select

*from account;

select

*from account_log;

-- 建立update型觸發器

delimiter $

create

trigger account_update

after

update

on account

for each row

begin

insert

into account_log values

(null

,'update'

,now()

,new.id,concat(

'更新前'

'更新後'))

;end $

delimiter

;-- 測試

update account set money=

2000

where name=

'阿彪'

;select

*from account;

select

*from account_log;

-- 建立delete型觸發器

delimiter $

create

trigger account_delete

after

delete

on account

for each row

begin

insert

into account_log values

(null

,'delete'

,now()

,old.id,concat(

'刪除前'))

;end $

delimiter

;-- 測試delete型觸發器

delete

from account where name=

'阿彪'

;select

*from account;

select

*from account_log;

-- 檢視觸發器

show triggers;

-- 刪除觸發器

drop

trigger account_insert;

drop

trigger account_update;

drop

trigger account_delete;

MySQL學習筆記6(觸發器)

觸發器 trigger 是由事件來觸發某個操作。這些事件包括insert語句 update語句和delete語句。當資料庫系統執行這些事件時,就會啟用觸發器執行相應的操作。1 觸發器的含義和作用 2 如何建立觸發器 3 如何檢視觸發器 4 如何刪除觸發器 語法基本形式為 create trigger...

Mysql學習筆記(十二)觸發器

原文 mysql學習筆記 十二 觸發器 學習內容 1.觸發器 什麼是觸發器?我們什麼時候能夠使用觸發器?觸發器就是用來監聽某個表的變化,當這個表發生變化的時候來觸發某種操作.比若說兩個表是相互關聯的,當我們在對其中乙個 進行操作的同時,另乙個表內的資料也需要進行某種操作,那麼我們就需要建立乙個觸發器...

MySQL學習筆記(12) 觸發器

本文更新於2019 06 23,使用mysql 5.7,作業系統為deepin 15.4。目錄為了便於描述,此處將建立觸發器的ddl複述一次,其已於 sql 章節描述。create trigger triggername before after insert update delete on ta...