Bonjour à tous

Je voudrais ecrire une fonction qui contrôlle la dependance dans champ parraport à un autre.
Le champ principal est du type "boolean" et le champ dependant est du type "int" ou "character varying". Si le champ principal a la Valeur "true", le champ dependant devarait avoir une valeur. Dans le cas ou le champ principal a la valeur "false", il peut être inscrit dans le champ dependant une valeur ou pas.
Voilà la fonction que j´ai ecrite:

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
CREATE OR REPLACE FUNCTION ikt_status_check2(BOOLEAN, ikt_int_bit15)
  RETURNS BOOLEAN AS
$BODY$
DECLARE 
 
b character varying;
BEGIN 
 
IF($1=true) 
THEN SELECT $2 INTO b FROM structure WHERE $1 = true;
END IF;
IF(length(b) = 0)
THEN Raise Exception '|STATUS_NOT_RESPECTED|The field % has to have a value ',$2;
END IF;
 
RETURN true;
END;
 
$BODY$
  LANGUAGE 'plpgsql' VOLATILE
  COST 100;
ALTER FUNCTION ikt_status_check2(BOOLEAN, ikt_int_bit15) OWNER TO postgres;
je fais appel à la fonction à l´aide d´un "constraint", il se presente ainsi:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
ALTER TABLE structure
  ADD CONSTRAINT ikt_status_check2 CHECK (ikt_status_check2(jump_to_index_status, jump_to_index));
Quand je fais un insert dans ma table et attribue au champ "jump_to_index_status" la valeur true, je devrais normalement recevoir une erreur, cela ne se produit pas et la valeur est tout simplement inscrite dans la table.

Es que l´un d´entre vous saurait peut être l´erreur que je commet dans ma fonction.

Merci d´avance.

Yannick