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:

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
Puis je rajoute le check pour que la valeur de cette fonction soit égale à true.
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!