Bonjour,

Je viens de créer un trigger avec le code ci dessous mais il ne fonctionne pas. Ou est mon erreur?

Je veux que lorsque j'intègre mes donnée avec copy ou via une procédure SQL (=> je drop la table, la recrée et l'alimente), je puisse avoir sur les 3 dernière colonne 1 seul colonne avec des données.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
-- Table d'injection centre de cout
CREATE TABLE calcmi.inj_centre_cout
(
  mi character varying(10) NOT NULL, -- périmètre
  reseau character(25), -- Réseau
  dept character varying(4), -- Département
  c_cout character varying(15), -- Centre de cout
  ccout_lib character varying(250) NOT NULL, -- Libelle du centre de cout
  Creation character varying(4),
  inactive character varying(4),
  lib_modifier character varying(25),
  CONSTRAINT pk_calcmi.inj_centre_cout PRIMARY KEY (c_cout, ccout_lib)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE calcmi.inj_centre_cout OWNER TO postgres;
GRANT ALL ON TABLE calcmi.inj_centre_cout TO lorrainng;
GRANT ALL ON TABLE calcmi.inj_centre_cout TO postgres;
COMMENT ON TABLE calcmi.inj_centre_cout IS 'Table d injection des centres de cout';
COMMENT ON COLUMN calcmi.inj_centre_cout.mi IS 'Perimetre';
COMMENT ON COLUMN calcmi.inj_centre_cout.reseau IS 'Reseau';
COMMENT ON COLUMN calcmi.inj_centre_cout.dept IS 'Departement';
COMMENT ON COLUMN calcmi.inj_centre_cout.ccout_lib IS 'Libelle du centre de cout';
COMMENT ON COLUMN calcmi.inj_centre_cout.c_cout IS 'Centre de cout';
 
Create Function calcmi.Injection_OK() Returns Trigger
As $$
Begin
	If Exists (
		Select
		*
		From
			calcmi.inj_centre_cout AS injcc
		Where
			injcc.creation > 0 AND injcc.inactive > 0
		OR	injcc.inactive > 0 AND injcc.lib_modifier > 0
		OR	injcc.lib_modifier > 0 AND injcc.creation > 0
	) Then
		Return NULL; -- indique à insert d'ignorer la ligne
	End If;
	Return NEW; -- indique à insert de traiter la ligne
End;
$$ Language plpgsql;
 
Create Trigger Injection_OK
    Before Insert On calcmi.inj_centre_cout
    For Each Row
    Execute Procedure calcmi.Injection_OK();
Merci pour votre aide?
Vandman