1
我有一張SQL表格,它持有玩家在紙牌遊戲中接收到的最後一手牌。手是由整數表示(32位== 32卡):在表格中保留一定數量的記錄
create table pref_hand (
id varchar(32) references pref_users,
hand integer not NULL check (hand > 0),
stamp timestamp default current_timestamp
);
當玩家在玩不斷,並且該數據並不重要(在玩家的個人資料頁面中顯示只是一個噱頭)和我不希望我的數據庫增長得太快,我想每個玩家ID只保留10條記錄。所以,我想聲明這個PL/pgSQL的過程:
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;
可惜這次失敗:
ERROR: syntax error at or near "offset"
因爲刪除不支持偏移。有人請在這裏有一個更好的主意嗎?
謝謝你,但是使用的時候,我總是擔心 - 列表 - 它們不是太昂貴的性能方面? – 2011-01-12 12:37:04
不一定,特別是如果它限制爲10行。但只有執行計劃可以告訴... – 2011-01-12 12:39:17