カードゲームでプレイヤーが最後に受け取った手を持つSQLテーブルがあります。プレイヤーは常にプレーしていると、データが重要ではありません(ただギミックがプレーヤーのプロフィールページに表示される)とIのようテーブルに一定数のレコードを残す
create table pref_hand (
id varchar(32) references pref_users,
hand integer not NULL check (hand > 0),
stamp timestamp default current_timestamp
);
:手が整数(32ビット== 32枚のカード)で表されます私のデータベースがあまりにも急速に成長しないようにするために、私はプレーヤーIDごとに最大10のレコードしか保持しません。
create or replace function pref_update_game(_id varchar,
_hand integer) returns void as $BODY$
begin
delete from pref_hand offset 10 where id=_id order by stamp;
insert into pref_hand (id, hand) values (_id, _hand);
end;
$BODY$ language plpgsql;
を残念ながら、これはで失敗します:だから私はこのにPL/pgSQLプロシージャを宣言しようとしている削除はオフセットをサポートしていないため
ERROR: syntax error at or near "offset"
。誰ももっと良いアイデアをここに持っていますか?このような
ありがとうございますが、中に使用しているとき、私はいつも心配です(もしあれば)この1が正しく
stamp
上の重複を処理します - リスト - 彼らはあまりにも高価なパフォーマンス賢明ではありませんか? –必ずしもそうではありません。特に10行に制限されている場合は特にそうです。しかし、実行計画だけが伝えることができます... –
ありがとうございました(と私は上記の "desc"を追加しなければならなかった) –