====== Postgres, transporter i funkcije koje menjaju podatke ====== Način na koji sistem za razmenu podataka hvata zapise za žurnal izmena oslanja se na //Records Affected// svojstvo Jet OLE DB provajdera.\\ Na žalost, implementacija ovog svojstva u PostgreSQL nije potpuno identična (defakto, standard i ne postoji). Usled toga, u cilju logovanja poziva Pg funkcijama koje menjaju podatke, neophodno je funkciju napisati tako da: * rezultat poziva bude tabela sa jednom kolonom pod nazivom **dummy** integer tipa Na primer: CREATE OR REPLACE FUNCTION bpub.cs3_fixpremestdts( ) RETURNS TABLE(dummy integer) LANGUAGE 'sql' COST 100 VOLATILE ROWS 1000 AS $BODY$ WITH jfrom AS (SELECT U.DTStamp,U.ulid FROM Ulaz AS U INNER JOIN Ulaz AS S ON U.Link=S.UlID WHERE U.DTStamp>=S.DTStamp AND U.DocTip IN (SELECT DTID FROM defDocTip WHERE FPrenos)) UPDATE Ulaz AS AU_U SET DTStamp=jfrom.DTStamp-0.00002 FROM jfrom WHERE AU_U.ulid=jfrom.ulid RETURNING 1; $BODY$; ili ako funkcija nije prost SQL, već treba ručno vratiti pomenutu kolonu: CREATE OR REPLACE FUNCTION bpub.cs2_set_vaz_period_bulk( indocid integer) RETURNS TABLE(dummy integer) LANGUAGE 'plpgsql' COST 100 VOLATILE AS $BODY$ ... -- kraj RETURN QUERY SELECT 1; END; $BODY$;