我正在使用SQL Server 2005並在其中一個表中有一列存儲存儲的proc名稱。在該列中插入值時,我想確保數據庫中存在該名稱的存儲過程。添加一個約束,檢查是否存在proc
ALTER TABLE MyTable WITH CHECK
ADD CONSTRAINT [CK_MyTable_MyColumn] CHECK ((SELECT COUNT(*) FROM sys.sysobjects WHERE id = object_id(MyColumn) AND OBJECTPROPERTY(id, N'IsProcedure')=1) = 1)
但這提供了以下錯誤
子查詢在此背景下 允許。只有標量表達式允許使用 。
我該怎麼做。
如果您發佈的是代碼或XML,請**在文本編輯器中突出顯示這些行,然後單擊編輯器工具欄上的「代碼」按鈕(101 010),以良好地格式化和語法突出顯示它! – 2010-11-18 06:50:31
作爲一個側面說明:我會使用sys.procedures而不是sys.sysobjects,首先,它更清楚你做了什麼,其次,你不必定義一個對象類型來檢查 - 它已經很清楚,它是一個你正在尋找的程序 – 2010-11-18 06:52:19