Show pageOld revisionsBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== 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: <code> 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$; </code> ili ako funkcija nije prost SQL, već treba ručno vratiti pomenutu kolonu: <code> 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$; </code> CKG Edit kb/pg/balans_modif_functions_data_sync.txt Last modified: 2019/05/11 09:20by milano