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:
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
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;
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.
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));
Es que l´un d´entre vous saurait peut être l´erreur que je commet dans ma fonction.
Merci d´avance.
Yannick
Partager