SQL Server stöder för närvarande inte underfrågor för CHECK BEGRÄNSNINGAR .
Som du har upptäckt kan det finnas problem med CHECK-begränsningar involverar UDF:er när man försöker kringgå underfrågans begränsning.
De alternativa strategierna för implementering av restriktioner är utlösta procedurmässiga och inbäddad procedur . Den förra är att föredra eftersom de, i likhet med deklarativa begränsningar, inte kan kringgås.
Att implementera en utlöst procedurstrategi som är väl optimerad och hanterar samtidighetsfrågor är inte trivialt men ändå genomförbart. Jag rekommenderar starkt boken Applied Mathematics for Database Professionals Av Lex de Haan, Toon Koppelaars , kapitel 11 (kodexemplen är Oracle men kan enkelt porteras till SQL Server).