最近重新研究觸發器的時候,突然想到了一個在工作中經常用到的場景,那就是有些時候我們需要對表里的數據進行刪除,但是在刪除的時候,需要將被數據插入到歷史表中,想着用觸發器實現就比較方便了。
例子中使用的表結構,被刪除表的test2的表結構和它一樣
-- 創建備份表
create table test2_history
(
field1 varchar(10) not null,
field2 varchar(5) not null,
field3 int default 1 null,
field4 decimal(4, 2) null,
field5 int auto_increment
primary key
);
創建觸發器
-- 創建觸發器
create trigger test2_trigger_delete_before
before delete
on test2
for each row
begin
-- 統計刪除前test2的行數賦值到test2_befNum變量
select count(*) from test2 into @test2_befNum;
-- 將test2表被刪除的數據,插入到test2_history歷史表中
insert into test2_history select field1,field2, field3, field4, field5 from test2 deleted;
-- 將被刪除test2表的field1字段賦值給test2_del_field1變量
select field1 from test2 deleted into @test2_del_field1;
end ;
在這里select field1,field2,field3,field4,field5 字段順序要和test2表的字段順序一致,否則會有問題
此時test2_history表的數據情況
test2表的情況
執行刪除test2 的操作
delete from test2;
再此查詢test2_history歷史表