在SQL Server 2008 中建立具有檢查限制的自訂函數
使用SQL Server 資料庫時,維護資料至關重要。檢查約束提供了一種有價值的機制來確保插入表中的資料遵守指定的規則。在這種情況下,需要建立一個自訂函數,使用檢查約束來驗證兩個表之間的關係。
具體來說,在本例中,目標是在 event_expected_attendance 欄位上建立檢查約束events 表,確保它不會超過場地表中的venue_max_capacity 整數。為此,必須在檢查約束內定義和引用自訂函數。
建立自訂函數
名為 CheckVenueCapacity 的自訂函數檢查是否提供了容量值小於或等於給定venue_id 的venue_max_capacity。以下是函數的程式碼:
CREATE FUNCTION dbo.CheckVenueCapacity (@venue_id int, @capacity int) RETURNS int AS BEGIN DECLARE @retval int SELECT @retval = CASE WHEN venue_max_capacity >= @capacity THEN 0 ELSE 1 END FROM venues WHERE venue_id = @venue_id RETURN @retval END;
如果容量有效,則函數傳回 0;如果超出場地最大容量,則傳回 1。
新增檢查約束
定義自訂函數後,我們可以為事件新增檢查約束表:
ALTER TABLE events ADD CONSTRAINT chkVenueCapacity CHECK (dbo.CheckVenueCapacity(event_venue_id, event_expected_attendance) = 0);
此約束可確保向event_expected_attendance 欄位中插入的任何資料均由CheckVenueCapacity 函數驗證,從而防止值違反場地的最大容量。
以上是如何使用自訂函數建立 SQL Server 檢查約束來跨表驗證資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!