Heim > Datenbank > MySQL-Tutorial > Wie kann ich Unterabfragen in SQL Server 2008 R2-Prüfungseinschränkungen verwenden?

Wie kann ich Unterabfragen in SQL Server 2008 R2-Prüfungseinschränkungen verwenden?

DDD
Freigeben: 2025-01-03 18:20:39
Original
572 Leute haben es durchsucht

How Can I Use Subqueries in SQL Server 2008 R2 Check Constraints?

Unterabfragen in Prüfeinschränkungen: Eine Problemumgehung

In SQL Server 2008 R2 löst die Verwendung von Unterabfragen in Prüfeinschränkungen eine Fehlermeldung aus, die besagt, dass nur Skalar vorhanden sind Ausdrücke sind erlaubt. Der folgende Code zielt beispielsweise darauf ab, beim Einfügen von Daten eine Spalte in Tabelle1 mit Werten in Tabelle2 zu vergleichen:

ALTER TABLE Table1
        WITH CHECK ADD CONSTRAINT CK_Code
        CHECK (MyField in (Select Field From Table2))
Nach dem Login kopieren

Behebung des Fehlers

Um diese Einschränkung zu umgehen, Erwägen Sie alternative Ansätze:

1. Verwenden einer Funktion:

Konvertieren Sie die Unterabfrage in eine Funktion, die einen Skalarwert (z. B. True oder False) zurückgibt, der angibt, ob der Wert in der anderen Tabelle vorhanden ist. Verwenden Sie dann die Funktion in der Prüfeinschränkung.

Zum Beispiel:

CREATE FUNCTION myFunction (
    @field DATATYPE(?)
)
RETURNS VARCHAR(5)
AS
BEGIN
    IF EXISTS (SELECT* FROM Table2 WHERE MYFIELD = @field)
        return 'True'
    return 'False'
END
Nach dem Login kopieren

2. Alternative Syntax:

In einigen Fällen ist es möglich, die Prüfeinschränkung mithilfe einer alternativen Syntax umzuschreiben, die Unterabfragen vermeidet:

  • Verwendung von EXISTS:

    CHECK (EXISTS (SELECT* FROM Table2 WHERE MYFIELD = MyField))
    Nach dem Login kopieren
  • Verwenden von IN mit a Unterauswahl:

    CHECK (MyField IN (SELECT Field FROM Table2))
    Nach dem Login kopieren

3. Fremdschlüsseleinschränkung:

Wenn die Beziehung zwischen den Tabellen eine echte Fremdschlüsselbeziehung darstellt, ist die Verwendung einer Fremdschlüsseleinschränkung die am besten geeignete Lösung. Dies erzwingt die referenzielle Integrität und garantiert die Datenkonsistenz.

Durch die Implementierung einer der genannten Problemumgehungen können Sie unterabfrageähnliche Funktionen in Prüfeinschränkungen nutzen, allerdings mit zusätzlichen Überlegungen wie der Implementierung von Funktionen oder der Verwendung einer alternativen Syntax.

Das obige ist der detaillierte Inhalt vonWie kann ich Unterabfragen in SQL Server 2008 R2-Prüfungseinschränkungen verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage