-- protect against wrong card in fiche_detail CREATE OR REPLACE FUNCTION comptaproc.fiche_detail_check_qcode() RETURNS trigger LANGUAGE plpgsql AS $function$ declare i record; begin if NEW.ad_id=23 and NEW.ad_value != OLD.ad_value then RAISE NOTICE 'new qcode [%] old qcode [%]',NEW.ad_value,OLD.ad_value; update jrnx set j_qcode=NEW.ad_value where j_qcode = OLD.ad_value; update op_predef_detail set opd_poste=NEW.ad_value where opd_poste=OLD.ad_value; raise notice 'TRG fiche_detail update op_predef_detail set opd_poste=% where opd_poste=%;',NEW.ad_value,OLD.ad_value; for i in select ad_id from attr_def where ad_type = 'card' or ad_id=25 loop update fiche_detail set ad_value=NEW.ad_value where ad_value=OLD.ad_value and ad_id=i.ad_id; RAISE NOTICE 'change for ad_id [%] ',i.ad_id; if i.ad_id=19 then RAISE NOTICE 'Change in stock_goods OLD[%] by NEW[%]',OLD.ad_value,NEW.ad_value; update stock_goods set sg_code=NEW.ad_value where sg_code=OLD.ad_value; end if; end loop; end if; return NEW; end; $function$ ; drop trigger if exists fiche_detail_check_qcode_trg on public.fiche_detail ; create trigger fiche_detail_check_qcode_trg before insert or update on public.fiche_detail for each row execute function comptaproc.fiche_detail_check_qcode(); update fiche_detail set ad_value=ad_value where ad_id in (select ad_id from attr_def where ad_type='card');