Verwendung von Funktionen zur Erweiterung von Prüfeinschränkungen
Die Verbesserung der Funktionalität von Prüfeinschränkungen kann manchmal Herausforderungen mit sich bringen, wie beispielsweise die Situation zeigt, in der eine Überprüfung erforderlich ist Daten beim Einfügen mit einer anderen Tabelle vergleichen. Die Verwendung von Unterabfragen in diesem Szenario löst einen Fehler aus, der auf das Verbot solcher Konstrukte innerhalb von Check-Constraint-Definitionen hinweist.
Glücklicherweise gibt es einen alternativen Ansatz, der die Einschränkung für Check-Constraints umgeht. Indem wir eine Funktion erstellen, die die gewünschte Abfrage einbezieht und einen Skalarwert liefert, können wir die Funktionalität der Abfrage in die Prüfeinschränkung integrieren. Der folgende Codeausschnitt veranschaulicht diese Technik:
CREATE FUNCTION myFunction ( @field DATATYPE(?) ) RETURNS VARCHAR(5) AS BEGIN IF EXISTS (SELECT* FROM Table2 WHERE MYFIELD = @field) return 'True' return 'False' END
Wenn diese Funktion vorhanden ist, können wir sie mithilfe der folgenden Syntax nahtlos in die Prüfeinschränkung integrieren:
ALTER TABLE Table1 WITH CHECK ADD CONSTRAINT CK_Code CHECK (myFunction(MYFIELD) = 'True')
Indem wir diesen Ansatz übernehmen Wir erweitern effektiv die Möglichkeiten von Check-Constraints und ermöglichen es uns, Daten anhand externer Tabellen zu validieren und komplexe Geschäftsregeln durchzusetzen, ohne auf Trigger zurückgreifen zu müssen.
Das obige ist der detaillierte Inhalt vonWie können Funktionen Prüfeinschränkungen verbessern, um Daten anhand anderer Tabellen zu validieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!