Ich habe eine SQL-Tabelle, die die letzten Hände hält, die ein Spieler im Kartenspiel erhalten hat. Die Hand wird durch eine ganze Zahl (32 Bit == 32 Karten) dargestellt:Behalte eine bestimmte Anzahl von Datensätzen in einer Tabelle
create table pref_hand (
id varchar(32) references pref_users,
hand integer not NULL check (hand > 0),
stamp timestamp default current_timestamp
);
Da die Spieler spielen ständig und dass Daten nicht wichtig ist (nur ein Gimmick bei Spieler-Profilseite angezeigt werden) und I Ich möchte nicht, dass meine Datenbank zu schnell wächst, ich möchte nur bis zu 10 Datensätze pro Spieler-ID behalten. So versuche ich, dieses PL/PgSQL Prozedur zu deklarieren:
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;
aber leider nicht mit:
ERROR: syntax error at or near "offset"
weil löschen nicht versetzt unterstützen. Hat jemand bitte eine bessere Idee hier?
Danke handhaben, aber ich bin immer besorgt, wenn Sie sich mit der -Listen - sind sie nicht zu teuer in Bezug auf die Leistung? –
Nicht unbedingt, besonders wenn es auf 10 Zeilen beschränkt ist. Aber nur der Ausführungsplan kann sagen ... –
Danke (und ich musste "desc" oben hinzufügen) –