Un modo per ottenerlo è semplicemente scrivere cosa significa effettivamente "OR esclusivo":
CHECK (
(FK1 IS NOT NULL AND FK2 IS NULL)
OR (FK1 IS NULL AND FK2 IS NOT NULL)
)
Tuttavia, se hai molti FK, il metodo sopra può diventare rapidamente ingombrante, nel qual caso puoi fare qualcosa del genere:
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)
...
)
)
A proposito, ci sono usi legittimi per quel modello, ad esempio questo (sebbene non applicabile a MS SQL Server a causa della mancanza di vincoli differiti). Se è legittimo nel tuo caso particolare, non posso giudicare in base alle informazioni che hai fornito finora.