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