【发布时间】:2011-01-12 12:28:26
【问题描述】:
我有一个 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"
因为 delete 不支持偏移。有人请在这里有更好的主意吗?
【问题讨论】:
标签: postgresql plpgsql sql-delete