MySQL高階 02 MySQL觸發器

2021-10-19 07:49:53 字數 2751 閱讀 3871

1.觸發器的概念

觸發器型別

old的含義

new的含義

insert 型觸發器

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

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

update 型觸發器

old 表示修改之前的資料

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

delete 型觸發器

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

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

2.建立觸發器

delimiter $

create trigger 觸發器名稱

before|after insert|update|delete

on 表名

[for each row] -- 行級觸發器

begin

觸發器要執行的功能;

end$

delimiter ;

-- 建立db9資料庫

create database db9;

-- 使用db9資料庫

use db9;

-- 建立賬戶表account

create table account(

id int primary key auto_increment, -- 賬戶id

name varchar(20), -- 姓名

money double -- 餘額

);-- 新增資料

insert into account values (null,'張三',1000),(null,'李四',2000);

-- 建立日誌表account_log

create table account_log(

id int primary key auto_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 ;

-- 向account表新增記錄

insert into account values (null,'王五',3000);

-- 查詢account表

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 ;

-- 修改account表

update account set money=3500 where id=3;

-- 查詢account表

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 ;

-- 刪除account表資料

delete from account where id=3;

-- 查詢account表

select * from account;

-- 查詢日誌表

select * from account_log;

3.檢視觸發器

-- 標準語法

show triggers;

-- 檢視觸發器

show triggers;

4.刪除觸發器
-- 標準語法

drop trigger 觸發器名稱;

-- 刪除delete觸發器

drop trigger account_delete;

5.觸發器的總結

02 mysql連線階段

連線階段執行以下任務 交換客戶端和伺服器的功能 capabilities 如果需要,設定ssl通訊通道 根據伺服器驗證客戶端 初始握手開始於伺服器傳送initial handshake packet給客戶端。此後,可選地,客戶端可以請求使用ssl connection request packet建...

MYSQL學習02 MySQL基礎操作

學習sql的基本查詢。語法 select column 1,column 2,from table 1 inner left right join table 2 on conditions where conditions group by column 1 h ing group conditi...

02 MySql入門學習 約束

約束是一種限制,通過對錶行或列的資料做出限制,來確保資料的完整性和唯一性等 作用 限制某乙個字段不能為空 語法 欄位名 型別 長度 not null,圖形介面操作 作用 限制列 該欄位 的值只能是唯一的,該列不能出現重複的值 語法 字段 型別 長度 unique,圖形介面操作 無 作用 表示字段唯一...