Insert zaznamu do Postgresu a zjisteni PK
Zdenek Janis
zdenek.janis na brajan.cz
Úterý Červenec 29 13:38:29 CEST 2003
Zdravim,
uz asi pul roku v mezi casu se seznamuji s Postgresem(7.3) a stale resim
jednu drobnost, kterou lze doufam resit nejak elegantneji:
CREATE TABLE sklad (
id SERIAL,
kategorie TEXT NOT NULL,
nazev TEXT NOT NULL,
nakup DATE NOT NULL,
PRIMARY KEY("id")
) WITH OIDS;
Vlozim zaznam:
INSERT INTO sklad (kategorie, nazev, nakup) values ('tmp', 'tmp', now());
Zaznam se vlozi, ale ja bych potreboval ziskat id tohoto vlozeneho zaznamu.
Zatim to resim takto funkci:
CREATE FUNCTION fnc_sklad_insert () RETURNS integer AS'
declare LastOID OID;
LastID integer;
InsertSQL text;
begin
InsertSQL = '' insert into sklad (kategorie, nazev, nakup) values
(''''tmp'''', ''''tmp'''', now());'
EXECUTE InsertSQL;
GET DIAGNOSTICS LastOID = RESULT_OID;
SELECT INTO LastID s.id FROM sklad s WHERE (s.oid = LastOID);
return LastID;
end;
'LANGUAGE 'plpgsql' STABLE CALLED ON NULL INPUT SECURITY INVOKER;
Ale preci jen by to melo jit nejak resit na urovni "pouze" SQL. Ctenim
nejakych sys tabulek ci tak nejak?!
Koukal jsem do dokumentace, tam je sice povidani mnoho, ale nejak jsem
se nedopatral...
Dekuji
Zdenek
Další informace o konferenci Linux