я имею таблицу, как показано ниже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_bckup, которая имеет точно такую же структуру, как и sda_user_eform_data. Я хочу сохранить только 5 строк (последние строки) в sda_user_eform_data и всякий раз, когда 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 ;
Я не могу узнать, где триггер поступил не так, как его не исполнилось. Любое предложение очень приветствуется.
Заранее спасибо.
спасибо за ваш ответ, я пытался без кавычек. но он дает следующую ошибку: 'В СИНХРОННОЙ триггере нет СТАРШЕЙ строки.' – user2625279
Вот почему я сказал, что вы должны прочитать об этом. Сообщение об ошибке достаточно ясно, не так ли? – fancyPants