0

MySQL テーブルに 10 行だけを格納するにはどうすればよいですか? 新しい行が追加されたときに古い行を削除する必要がありますが、テーブルに 10 行ある場合に限ります。

私を助けてください

4

3 に答える 3

1

これは、挿入後トリガーを使用して実現でき、最小日付の行を削除します。例: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;
于 2012-06-06T09:04:38.573 に答える
0

最初の行が挿入されたときに最後に挿入されたIDを取得し、それを変数に格納できます。10行挿入したら、最初に挿入したレコードのid<idの行を削除します。ぜひお試しください。

于 2012-06-06T09:05:29.010 に答える
0

まず、挿入クエリを使用してすべての値を挿入してから、このクエリを実行します

delete from table_name where (cond) order by id desc limit 10

1つの列にIDまたは時刻を指定する必要があります

于 2012-06-06T09:08:07.103 に答える