列のある単純なテーブルがあります。
date - DATETIME
name - varchar(50)
text - varchar(200)
11番目の行が追加される直前に削除する最も古い日付値を含む行を取得するにはどうすればよいですか?行数は常に10です。
トリガーを使用する
create TRIGGER trigger_name before insert on table_name
FOR EACH ROW
BEGIN
if count > 10 then
delete from table_name
insert into table_name values(id, name , quantity);
END if;
END ;
このリンクも参照できます http://dev.mysql.com/doc/refman/5.0/en/triggers.html
次のように削除クエリを使用して削除後トリガーを作成します。
//get the row count
IF rowCount > 10
DELETE from myTable
WHERE date =
(select date from
(select date from myTable
order by date asc LIMIT 1) as tempTable
)
END IF;
削除クエリの同じテーブル条件が機能しないため、これをお勧めします。これが私の別の答えです。
insert
+ delete
?を実行する代わりに、最も古い行を更新します。もちろん、最初にテーブルに10行あることを確認する必要があります。