SQL Server unterstützt derzeit keine Unterabfragen für CHECK EINSCHRÄNKUNGEN .
Wie Sie festgestellt haben, kann es Probleme mit CHECK-Einschränkungen Einbeziehen von UDFs beim Versuch, die Unterabfragebeschränkung zu umgehen.
Die alternativen Strategien zur Implementierung von Beschränkungen sind ausgelöste prozedurale und eingebettete prozedurale . Ersteres wird bevorzugt, da es, ebenso wie deklarative Beschränkungen, nicht umgangen werden kann.
Die Implementierung einer getriggerten prozeduralen Strategie, die gut optimiert ist und Parallelitätsprobleme behandelt, ist nicht trivial, aber dennoch machbar. Ich empfehle das Buch Angewandte Mathematik für Datenbankfachleute von Lex de Haan, Toon Koppelaars , Kapitel 11 (die Codebeispiele stammen von Oracle, können aber leicht auf SQL Server portiert werden).