私は以下のようなテーブルを持っています
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 より大きい場合は常に、古い値を 2 番目の (sda_user_eform_data_bckup) テーブルに移動する必要があります。
最初に、sda_user_eform_data テーブルのすべての行を sda_user_eform_data_bckup テーブルにコピーしました。次に、ack_no をチェックした次のトリガーを作成しました。5 より大きい場合は、最も古い ack_no を削除し、新しい値をバックアップ テーブルに挿入します。
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 ;
トリガーが実行されていないため、どこでトリガーが失敗したかを見つけることができません。どんな提案でも大歓迎です。
前もって感謝します。