mandag, september 23, 2013
Postgresql-historik
I andre sammenhænge har jeg kigget på historik på databasetabeller. I den version af Oracle jeg tidligere har arbejdet med, blev det gjort med nogle ret så komplekse trigger-kommandoer. I postgresql er det mere simpelt. Eksempel nedenfor...:
alter table fot.bygning add column end_date date;
update fot.bygning set start_date=now();
--drop view fot.v_bygning;
create or replace view fot.v_bygning as select ogc_fid, fot_id, bygn_type, wkb_geometry from fot.bygning where end_date is null;
create or replace rule byg_del as on delete to fot.bygning do instead nothing;
Create or replace rule v_byg_del as on delete to fot.v_bygning
do instead update fot.bygning set end_date = now() where ogc_fid = OLD.ogc_fid;
Create or replace rule v_byg_ins as on insert to fot.v_bygning
do instead insert into fot.bygning (fot_id, bygn_type,wkb_geometry, start_date) values (NEW.fot_id, NEW.bygn_type, NEW.wkb_geometry, NOW());
create or replace rule v_byg_upd as on update to fot.v_bygning
do instead (
insert into fot.bygning (fot_id, bygn_type, wkb_geometry, start_date, end_date) values (NEW.fot_id, NEW.bygn_type, NEW.wkb_geometry, NOW(), null);
update fot.bygning set end_date = NOW() where ogc_fid=OLD.ogc_fid;
);
Nuvel - burde selvf. være timestamps og ikke date felter, men...
(0) comments
I andre sammenhænge har jeg kigget på historik på databasetabeller. I den version af Oracle jeg tidligere har arbejdet med, blev det gjort med nogle ret så komplekse trigger-kommandoer. I postgresql er det mere simpelt. Eksempel nedenfor...:
alter table fot.bygning add column end_date date;
update fot.bygning set start_date=now();
--drop view fot.v_bygning;
create or replace view fot.v_bygning as select ogc_fid, fot_id, bygn_type, wkb_geometry from fot.bygning where end_date is null;
create or replace rule byg_del as on delete to fot.bygning do instead nothing;
Create or replace rule v_byg_del as on delete to fot.v_bygning
do instead update fot.bygning set end_date = now() where ogc_fid = OLD.ogc_fid;
Create or replace rule v_byg_ins as on insert to fot.v_bygning
do instead insert into fot.bygning (fot_id, bygn_type,wkb_geometry, start_date) values (NEW.fot_id, NEW.bygn_type, NEW.wkb_geometry, NOW());
create or replace rule v_byg_upd as on update to fot.v_bygning
do instead (
insert into fot.bygning (fot_id, bygn_type, wkb_geometry, start_date, end_date) values (NEW.fot_id, NEW.bygn_type, NEW.wkb_geometry, NOW(), null);
update fot.bygning set end_date = NOW() where ogc_fid=OLD.ogc_fid;
);
Nuvel - burde selvf. være timestamps og ikke date felter, men...
Arhremmm!!!
Al information på denne side bør betragtes som uvederstyggeligt uvederhæftig, usammenhængende og evt. usand, og er ikke et udtryk for nogen form for intelligent tankevirksomhed. Så er der ikke sagt for meget! Men heller ikke for lidt! En primærkilde for nære bekendtskaber og andre sære væsener... Og så er den gratis.Hvis der er tekst på denne side, som du finder anstødende/fornærmende/copyright-forstyrrende, hvis du mener dig udsat for et uberettiget personangreb eller på anden måde har fået anledning til at sende en e-mæjl, så skriv til Le Thor
Bunden er noget!!!