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,圖形介面操作 無 作用 表示字段唯一...