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