Heim >Datenbank >MySQL-Tutorial >Können Check-Einschränkungen auf andere Tabellen in SQL-Datenbanken verweisen?
Können Prüfeinschränkungen auf andere Tabellen verweisen?
Viele Datenbanken unterstützen Prüfeinschränkungen als Mittel zur Durchsetzung der Datenintegrität. Mit diesen Einschränkungen können Sie Bedingungen angeben, die erfüllt sein müssen, damit Daten in eine Tabelle eingefügt oder darin aktualisiert werden.
Stellen Sie sich ein Szenario mit zwei Tabellen vor: ProjectTimeSpan und SubProjectTimeSpan. Jede Tabelle enthält die Spalten StartDate und EndDate. Sie möchten in SubProjectTimeSpan eine Prüfeinschränkung erstellen, die sicherstellt, dass die Werte StartDate und EndDate innerhalb von ProjectTimeSpan.StartDate und liegen ProjectTimeSpan.EndDate Bereich.
Ist eine solche Prüfeinschränkung möglich?
Ja, es ist möglich, eine solche Einschränkung mithilfe einer Funktion zu erstellen. Hier ist ein Beispiel mit der SQL Server-Syntax:
alter table SubProjectTimeSpan add constraint chk_CheckFunction check (dbo.CheckFunction() = 1)
In diesem Beispiel ist dbo.CheckFunction() eine benutzerdefinierte Funktion, die 1 zurückgibt, wenn das StartDate und EndDate-Werte in SubProjectTimeSpan fallen in den Bereich ProjectTimeSpan.StartDate und ProjectTimeSpan.EndDate Bereich. Hier ist eine Beispielimplementierung der Funktion:
create function dbo.CheckFunction() returns int as begin return (select 1 where exists(select 1 from ProjectTimeSpan where StartDate <= SubProjectTimeSpan.StartDate and EndDate >= SubProjectTimeSpan.EndDate)) end
Diese Funktion referenziert die Tabelle ProjectTimeSpan, um die Einschränkung zu überprüfen. Mithilfe einer Funktion können Sie Prüfeinschränkungen erstellen, die auf Werte in anderen Tabellen verweisen und so Flexibilität bei der Durchsetzung der Datenintegrität über mehrere Tabellen hinweg bieten.
Das obige ist der detaillierte Inhalt vonKönnen Check-Einschränkungen auf andere Tabellen in SQL-Datenbanken verweisen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!