檢查約束可以引用其他表格嗎?
許多資料庫支援檢查約束作為強制資料完整性的一種手段。這些約束可讓您指定在表中插入或更新資料必須滿足的條件。
考慮有兩個表格的場景:ProjectTimeSpan 和 SubProjectTimeSpan。每個表格都包含 StartDate 和 EndDate 欄位。您想要在SubProjectTimeSpan 中建立一個檢查約束,以確保StartDate 和EndDate 值落在ProjectTimeSpan.StartDate 和範圍內ProjectTimeSpan.EndDate
這樣的檢查約束可能嗎?
是的,可以使用函數來建立這樣的限制。以下是使用SQL Server 語法的範例:
alter table SubProjectTimeSpan add constraint chk_CheckFunction check (dbo.CheckFunction() = 1)
在此範例中,dbo.CheckFunction() 是使用者定義函數,如果StartDate 和EndDate 值在SubProjectTimeSpan 中下降在 ProjectTimeSpan.StartDate 和 ProjectTimeSpan.EndDate 範圍內。以下是函數的範例實作:
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
ProjectTimeSpan 表來驗證約束。透過使用函數,您可以建立引用其他表中的值的檢查約束,從而在跨多個表強制執行資料完整性方面提供靈活性。
以上是檢查約束可以引用 SQL 資料庫中的其他表嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!