En måde at opnå det på er blot at skrive ned, hvad "eksklusiv ELLER" faktisk betyder:
CHECK (
(FK1 IS NOT NULL AND FK2 IS NULL)
OR (FK1 IS NULL AND FK2 IS NOT NULL)
)
Men hvis du har mange FK'er, kan ovenstående metode hurtigt blive uhåndterlig, og i så fald kan du gøre sådan noget:
CHECK (
1 = (
(CASE WHEN FK1 IS NULL THEN 0 ELSE 1 END)
+ (CASE WHEN FK2 IS NULL THEN 0 ELSE 1 END)
+ (CASE WHEN FK3 IS NULL THEN 0 ELSE 1 END)
+ (CASE WHEN FK4 IS NULL THEN 0 ELSE 1 END)
...
)
)
BTW, der er legitime anvendelser af det mønster, for eksempel denne (omend ikke gældende for MS SQL Server på grund af manglen på udskudte begrænsninger). Om det er legitimt i netop dit tilfælde, kan jeg ikke vurdere ud fra de oplysninger, du har givet indtil videre.