MySQL使用觸發器實現刪除表時將資料轉移到歷史表

2022-09-08 18:00:13 字數 1383 閱讀 8799

最近重新研究觸發器的時候,突然想到了乙個在工作中經常用到的場景,那就是有些時候我們需要對表裡的資料進行刪除,但是在刪除的時候,需要將被資料插入到歷史表中,想著用觸發器實現就比較方便了。

例子中使用的表結構,被刪除表的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歷史表

mysql 觸發器 臨時表 Mysql觸發器

mysql觸發器 1.建立觸發器 注意 觸發器只能建立在永久表上,不能對臨時表建立觸發器,語法如下 create trigger trigger name trigger time trigger event on table name for each row trigger stmt trigg...

mysql 觸發器 觸發器使用

1 了解什麼是觸發器?mysql 的觸發器和儲存過程一樣,都是嵌入到mysql的一段程式,觸發器 是由事件觸發某個動作,這些事件包括,插入 更新 刪除等語句。如果定義了觸發程式,觸發器就會觸發執行相應的操作。觸發器 trigger 是個特殊的儲存過程,不同的是,執行儲存過程要使用call語句來呼叫,...

觸發器 mysql觸發器

觸發器是一種特殊的儲存過程,它在插入 刪除或修改特定表中的資料時觸發執行,它比資料庫本身標準的功能有更精細和更複雜的資料控制能力。和儲存過程一樣,很少使用。1 觸發器的作用 2 建立觸發器 建立測試環境 mysql create database test db query ok,1 row aff...