我有一個表,如下MySQL的觸發器來刪除舊記錄,插入新的
Table name: sda_user_eform_data
ack_no Name Description
1 name1 This is name1
2 name2 This is name2
3 name3 This is name3
我有一個具有完全相同的結構sda_user_eform_data另一個表sda_user_eform_data_bckup。我想在sda_user_eform_data中只存儲5行(最新行),並且每當ackno大於5時,舊值應該移動到第二個(sda_user_eform_data_bckup)表中。
對於首先我已將sda_user_eform_data表中的所有行復制到sda_user_eform_data_bckup表。那麼我已經創建了以下觸發器,其中我檢查了ack_no,如果它大於5,那麼它刪除最早的ack_no並將新值插入到bckup表中。
DELIMITER $$
create
trigger 'copy_eform_data' AFTER INSERT
on asdb.sda_user_eform_data
for each row begin
if (select count(s.ack_no) from asdb.sda_user_eform_data s)>5 then
delete from asdb.sda_user_eform_data where old.ack_no=(select min(s.ack_no) from asdb.sda_user_eform_data s);
insert into asdb.sda_user_eform_data_bckup select * from asdb.sda_user_eform_data where ack_no=select max(s.ack_no) from asdb.sda_user_eform_data s;
end$$
DELIMITER ;
我無法找到觸發器出錯的地方,因爲它沒有執行。任何建議都非常歡迎。
在此先感謝。
感謝您的回覆,不包括引號。但它給出了以下錯誤: 'INSERT觸發器上沒有舊行。' – user2625279
這就是爲什麼我說你應該閱讀它。錯誤信息很清楚,不是嗎? – fancyPants