У меня есть таблица 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
);
как игроки постоянно играют и что данные не важны (просто трюк, который будет отображаться на страницах профиля игрока) и I не хочу, чтобы моя база данных быстро развивалась, я бы хотел сохранить только до 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"
потому что удалить не поддерживает смещения. Кто-нибудь, пожалуйста, имеет лучшую идею здесь?
Спасибо, но я всегда волнуюсь при использовании в -листы - не слишком ли они слишком дороги? –
Не обязательно, особенно если он ограничен 10 строками. Но только план выполнения может сказать ... –
Спасибо (и мне пришлось добавить «desc» выше) –