ef2e931b296bf5832810269d72fff496806434bc
[kivitendo-erp.git] / sql / Pg-upgrade2 / acc_trans_without_oid.sql
1 -- @tag: acc_trans_without_oid
2 -- @description: Einführen einer ID-Spalte in acc_trans
3 -- @depends: release_2_4_3 cb_ob_transaction
4
5 CREATE SEQUENCE acc_trans_id_seq;
6
7 CREATE TABLE new_acc_trans (
8     acc_trans_id bigint DEFAULT nextval('acc_trans_id_seq'),
9     trans_id integer,
10     chart_id integer,
11     amount numeric(15,5),
12     transdate date DEFAULT date('now'::text),
13     gldate date DEFAULT date('now'::text),
14     source text,
15     cleared boolean DEFAULT false,
16     fx_transaction boolean DEFAULT false,
17     ob_transaction boolean DEFAULT false,
18     cb_transaction boolean DEFAULT false,
19     project_id integer,
20     memo text,
21     taxkey integer,
22     itime timestamp without time zone DEFAULT now(),
23     mtime timestamp without time zone
24 );
25
26 INSERT INTO new_acc_trans (acc_trans_id, trans_id, chart_id, amount, transdate, gldate, source, cleared,
27                            fx_transaction, ob_transaction, cb_transaction, project_id, memo, taxkey, itime, mtime)
28   SELECT oid, trans_id, chart_id, amount, transdate, gldate, source, cleared,
29     fx_transaction, ob_transaction, cb_transaction, project_id, memo, taxkey, itime, mtime
30   FROM acc_trans;
31
32 SELECT setval('acc_trans_id_seq', (SELECT COALESCE((SELECT MAX(oid::integer) FROM acc_trans), 0) + 1));
33
34 DROP TABLE acc_trans;
35 ALTER TABLE new_acc_trans RENAME TO acc_trans;
36
37 CREATE INDEX acc_trans_trans_id_key ON acc_trans USING btree (trans_id);
38 CREATE INDEX acc_trans_chart_id_key ON acc_trans USING btree (chart_id);
39 CREATE INDEX acc_trans_transdate_key ON acc_trans USING btree (transdate);
40 CREATE INDEX acc_trans_source_key ON acc_trans USING btree (lower(source));
41
42 ALTER TABLE ONLY acc_trans
43     ADD CONSTRAINT "$1" FOREIGN KEY (chart_id) REFERENCES chart(id);
44
45 CREATE TRIGGER mtime_acc_trans
46     BEFORE UPDATE ON acc_trans
47     FOR EACH ROW
48     EXECUTE PROCEDURE set_mtime();