首頁 >資料庫 >mysql教程 >如何在 SQL Server 檢查約束中使用子查詢?

如何在 SQL Server 檢查約束中使用子查詢?

Patricia Arquette
Patricia Arquette原創
2025-01-04 18:31:40298瀏覽

How Can I Use Subqueries in SQL Server Check Constraints?

在檢查約束中使用子查詢

在 SQL Server 2008 R2 中,嘗試使用子查詢定義檢查約束,例如:

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

導致錯誤,表示此中不允許子查詢context.

替代解決方案:標量函數

要在沒有觸發器的情況下實現此驗證,可以建立封裝子查詢的標量函數並在檢查約束內使用。以下是一個範例:

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

將函數應用於檢查約束

定義函數後,可以在檢查約束中使用它,如下所示:

ALTER TABLE Table1
WITH CHECK ADD CONSTRAINT CK_Code
CHECK (myFunction(MYFIELD) = 'True')

透過根據特定字串(例如“True”)檢查函數傳回的標量值,可以強制執行所需的驗證,而無需需要直接在檢查約束中使用子查詢。

以上是如何在 SQL Server 檢查約束中使用子查詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn