diff options
Diffstat (limited to 'utils')
-rw-r--r-- | utils/fixme/fixme.pgsql | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/utils/fixme/fixme.pgsql b/utils/fixme/fixme.pgsql index 7ee23b4d..28ba8183 100644 --- a/utils/fixme/fixme.pgsql +++ b/utils/fixme/fixme.pgsql @@ -25,11 +25,11 @@ insert into id_agregator (id, table_name) SELECT id, 'warehouse' from warehouse; CREATE TEMPORARY VIEW id_view1 AS SELECT id, count(*) AS num_rows FROM id_agregator -GROUP BY id HAVING num_rows > 1; +GROUP BY id HAVING count(*) > 1; -select setval('id', select max(id) + 1 from id_agregator); +select setval('id', (select max(id) + 1 from id_agregator)); -create function fix_dupes() RETURNS OPAQUE AS +create function fix_dupes() RETURNS opaque AS ' DECLARE dupe_id id_agregator%ROWTYPE; @@ -38,20 +38,23 @@ FOR dupe_id IN SELECT id FROM id_agregator WHERE id IN (SELECT id FROM id_view1) LOOP EXECUTE ''UPDATE '' || dupe_id.table_name || - SET id = nextval(''''id'''') WHERE + '' SET id = nextval(''''id'''') WHERE id = '' ||dupe_id.id; UPDATE acc_trans SET trans_id = currval(''id'') WHERE - id = '' ||dupe_id.id; + id = ||dupe_id.id; INSERT INTO acc_trans (trans_id, amount, chart_id) VALUES ( - currval(''id''), '1', ( + currval(''id''), ''1'', ( SELECT id FROM chart WHERE accno = ''1000000000'' ) ); INSERT INTO acc_trans (trans_id, amount, chart_id) VALUES ( - currval(''id''), '-1', ( + currval(''id''), ''-1'', ( SELECT id FROM chart WHERE accno = ''1000000000'' ) ); + +END LOOP; +RETURN NULL; END; ' LANGUAGE PLPGSQL; |