109 lines
2.3 KiB
PL/PgSQL
109 lines
2.3 KiB
PL/PgSQL
begin;
|
|
CREATE TABLE groupe_analytique
|
|
(
|
|
ga_id varchar(10) NOT NULL,
|
|
ga_description text,
|
|
CONSTRAINT pk_ga_id PRIMARY KEY (ga_id)
|
|
) ;
|
|
|
|
|
|
CREATE OR REPLACE FUNCTION group_analytic_ins_upd()
|
|
RETURNS "trigger" AS
|
|
$BODY$declare
|
|
name text;
|
|
begin
|
|
raise notice 'poste_analytique_write';
|
|
name:=upper(NEW.ga_id);
|
|
name:=trim(name);
|
|
name:=replace(name,' ','');
|
|
NEW.ga_id:=name;
|
|
return NEW;
|
|
end;$BODY$
|
|
LANGUAGE 'plpgsql' VOLATILE;
|
|
ALTER FUNCTION group_analytic_ins_upd() OWNER TO postgres;
|
|
|
|
CREATE OR REPLACE FUNCTION group_analytique_del()
|
|
RETURNS "trigger" AS
|
|
$BODY$begin
|
|
update poste_analytique set ga_id=null
|
|
where ga_id=OLD.ga_id;
|
|
return OLD;
|
|
end;$BODY$
|
|
LANGUAGE 'plpgsql' VOLATILE;
|
|
ALTER FUNCTION group_analytique_del() OWNER TO postgres;
|
|
|
|
CREATE OR REPLACE FUNCTION poste_analytique_ins_upd()
|
|
RETURNS "trigger" AS
|
|
$BODY$declare
|
|
name text;
|
|
rCount record;
|
|
|
|
begin
|
|
name:=upper(NEW.po_name);
|
|
name:=trim(name);
|
|
name:=replace(name,' ','');
|
|
NEW.po_name:=name;
|
|
|
|
if NEW.ga_id is NULL then
|
|
return NEW;
|
|
end if;
|
|
|
|
if length(trim(NEW.ga_id)) = 0 then
|
|
NEW.ga_id:=NULL;
|
|
return NEW;
|
|
end if;
|
|
select into rCount * from groupe_analytique where ga_id=NEW.ga_id;
|
|
if NOT FOUND then
|
|
raise exception' Inexistent Group Analytic %',NEW.ga_id;
|
|
end if;
|
|
return NEW;
|
|
end;$BODY$
|
|
LANGUAGE 'plpgsql' VOLATILE;
|
|
|
|
CREATE OR REPLACE FUNCTION plan_analytic_ins_upd()
|
|
RETURNS "trigger" AS
|
|
$BODY$
|
|
declare
|
|
name text;
|
|
begin
|
|
name:=upper(NEW.pa_name);
|
|
name:=trim(name);
|
|
name:=replace(name,' ','');
|
|
NEW.pa_name:=name;
|
|
return NEW;
|
|
end;
|
|
$BODY$
|
|
LANGUAGE 'plpgsql' VOLATILE;
|
|
|
|
CREATE TRIGGER t_poste_analytique_ins_upd
|
|
BEFORE INSERT OR UPDATE
|
|
ON poste_analytique
|
|
FOR EACH ROW
|
|
EXECUTE PROCEDURE poste_analytique_ins_upd();
|
|
|
|
CREATE TRIGGER t_plan_analytique_ins_upd
|
|
BEFORE INSERT OR UPDATE
|
|
ON plan_analytique
|
|
FOR EACH ROW
|
|
EXECUTE PROCEDURE plan_analytic_ins_upd();
|
|
|
|
CREATE TRIGGER t_group_analytic_del
|
|
AFTER DELETE
|
|
ON groupe_analytique
|
|
FOR EACH ROW
|
|
EXECUTE PROCEDURE group_analytique_del();
|
|
|
|
CREATE TRIGGER t_group_analytic_ins_upd
|
|
BEFORE INSERT OR UPDATE
|
|
ON groupe_analytique
|
|
FOR EACH ROW
|
|
EXECUTE PROCEDURE group_analytic_ins_upd();
|
|
|
|
|
|
drop TRIGGER t_upper_pa_name on plan_analytique;
|
|
drop TRIGGER t_upper_po_name on poste_analytique;
|
|
drop function upper_pa_name();
|
|
drop function upper_po_name();
|
|
|
|
|
|
commit;
|