我有一张如下表
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_bckup,它的结构与 sda_user_eform_data 完全相同。我只想在 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 ;
我无法找出触发器在哪里出错,因为它没有执行。任何建议都非常受欢迎。
提前致谢。