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


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

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM