Bonjour à tous,
Je souhaiterais rajouter un "check" sur une de mes tables afin qu'une colonne booléenne ("IsLocalHouse") ne puisse posséder qu'une seule valeur à true.
J'ai donc créé une fonction avec le code pgsql suivant:
Puis je rajoute le check pour que la valeur de cette fonction soit égale à true.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 DECLARE nb_answers BigInt; BEGIN SELECT COUNT(*) INTO nb_answers FROM "DATA_STATIC_COUNTERPARTY" WHERE "IsLocalHouse" = true; IF nb_answers = 1 THEN RETURN true; ELSE RETURN false; END IF; END
Quand j'ajoute la contrainte, aucun problème: s'il n'y a qu'un seul true, le check se rajoute. S'il y en a plusieurs, une erreur est levée me disant que la condition n'est pas vérifiée.
Jusqu'ici tout va bien.
Par contre, une fois que j'ai rajouté l'exception, je peux mettre à true une seconde et une troisieme valeur de la colonne, et aucune erreur n'est levée. Et quand j'essaye de remettre à false une de ces valeurs (et même pour repasser de 2 valeurs true à une seule), une erreur est levée et m'empêche de modifier la valeur.
Une idée d'où peut venir ce problème très étrange?
Merci!
Partager