Heim >Datenbank >MySQL-Tutorial >Können Skalarwertfunktionen Unterabfrageeinschränkungen in SQL Server-Prüfungseinschränkungen umgehen?
Unterabfragefunktionalität in Prüfeinschränkungen
Die Verwendung von Unterabfragen in Prüfeinschränkungen ist seit langem eine Einschränkung in SQL-Server 2008 R2. In diesem Artikel wird das Problem untersucht und eine alternative Lösung mithilfe einer Skalarrückgabefunktion bereitgestellt.
Problem:
Beim Versuch, einen Spaltenwert anhand einer anderen Tabelle mithilfe einer Unterabfrage zu validieren Bei einer Check-Einschränkung tritt der folgende Fehler auf: „Unterabfragen sind in diesem Kontext nicht zulässig. Nur skalare Ausdrücke sind zulässig.“ erlaubt.“
Hintergrund:
Prüfeinschränkungen werden verwendet, um die Datenbankintegrität durchzusetzen, indem ein Ausdruck anhand jeder Zeile ausgewertet wird, die in eine Tabelle eingefügt oder aktualisiert wird. Normalerweise bestehen diese Ausdrücke aus Skalaroperationen und nicht aus Unterabfragen.
Lösung:
Um diese Einschränkung zu umgehen, kann eine benutzerdefinierte Skalarrückgabefunktion erstellt werden, die das Notwendige kapselt Unterabfrage. Die Funktion sollte einen Skalarwert ausgeben, der angibt, ob die Unterabfragebedingung erfüllt ist.
Beispiel:
Angenommen, wir haben eine Tabelle namens „Tabelle1“ mit einer Spalte „MyField“. Dies muss anhand einer Tabelle namens „Tabelle2“ validiert werden. Wir können eine Funktion namens „myFunction“ wie folgt erstellen:
CREATE FUNCTION myFunction ( @field DATATYPE(?) ) RETURNS VARCHAR(5) AS BEGIN IF EXISTS (SELECT* FROM Table2 WHERE MYFIELD = @field) return 'True' return 'False' END
Anwenden der Funktion:
Die „myFunction“ kann jetzt in der Prüfeinschränkung verwendet werden als folgt:
ALTER TABLE Table1 WITH CHECK ADD CONSTRAINT CK_Code CHECK (myFunction(MYFIELD) = 'True')
Dies emuliert effektiv die Funktionalität der Unterabfrage in der Prüfung Einschränkung.
Schlussfolgerung:
Obwohl Unterabfragen nicht direkt in Prüfeinschränkungen verwendet werden können, können skalar zurückgebende Funktionen verwendet werden, um die gewünschte Validierung zu erreichen. Diese Problemumgehung ermöglicht komplexere Datenvalidierungsszenarien, ohne die Datenbankintegrität zu beeinträchtigen.
Das obige ist der detaillierte Inhalt vonKönnen Skalarwertfunktionen Unterabfrageeinschränkungen in SQL Server-Prüfungseinschränkungen umgehen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!