On devrait s’en sortir avec un trigger.
1) Supprimer la contrainte Chef_Famille dans le Create Table :
Constraint Chef_Famille Unique (FamilleId, Chef)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
Create Table Famille (
FamilleId Int Not null,
FamilleNom Varchar(48) Not null,
Constraint Famille_PK Primary Key (FamilleId)
)
;
Create Table Personne (
PersonneId Int Not null,
FamilleId Int Not null,
Prenom Varchar(48) Not null,
Chef Char(1) Not Null,
DateNaissance Char(10) Not null,
Constraint Personne_PK Primary Key (PersonneId),
Constraint Personne_Famille_1 Foreign Key (FamilleId)
References Famille (FamilleId)) ; |
2) A la place, mettre en oeuvre un trigger (exemple avec SQL Server) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
CREATE TRIGGER Chef_Famille ON Personne For Insert, Update
As
Select x.*, 'Trig' as 'Trig Insert/Update'
From Inserted x, Personne y
Where x.FamilleId = y.FamilleId
And x.PersonneId <> y.PersonneId
And x.Chef = y.Chef
And x.Chef = 'y'
If @@Rowcount > 0
Begin
RAISERROR ('Un seul chef de famille !',18,1)
Return
End |
Partager