MySQL テーブルに 10 行だけを格納するにはどうすればよいですか? 新しい行が追加されたときに古い行を削除する必要がありますが、テーブルに 10 行ある場合に限ります。
私を助けてください
MySQL テーブルに 10 行だけを格納するにはどうすればよいですか? 新しい行が追加されたときに古い行を削除する必要がありますが、テーブルに 10 行ある場合に限ります。
私を助けてください
これは、挿入後トリガーを使用して実現でき、最小日付の行を削除します。例:DELETE FROM myTable WHERE myTimestamp =(SELECT MIN(myTimestamp)FROM myTable)ただし、更新の粒度によっては、理論的には複数の行が削除される可能性があります。
増分シーケンスを作成し、常にそのシーケンスの最小値を削除することができます。
問題は、なぜこれを実行したいのかということです。これは少し珍しい要件です。
基本的な例(検証/実行されていない、この特定のマシンにmySQLがない)は次のようになります。
CREATE TRIGGER CycleOldPasswords AFTER INSERT ON UserPasswords FOR EACH ROW
set @mycount = SELECT COUNT(*) FROM UserPasswords up where up.UserId = NEW.UserId;
if myCount >= 10 THEN
DELETE FROM UserPasswords up where up.Timestamp = (SELECT min(upa Timestamp) FROM UserPasswords upa WHERE NEW.UserId = upa.UserId) AND NEW.UserId = up.UserId;
END
END;
最初の行が挿入されたときに最後に挿入されたIDを取得し、それを変数に格納できます。10行挿入したら、最初に挿入したレコードのid<idの行を削除します。ぜひお試しください。
まず、挿入クエリを使用してすべての値を挿入してから、このクエリを実行します
delete from table_name where (cond) order by id desc limit 10
1つの列にIDまたは時刻を指定する必要があります