fonction pour plusieurs paramètres
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:
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:
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