【发布时间】:2010-11-18 06:47:23
【问题描述】:
我正在使用 SQL Server 2005,在其中一个表中我有一列存储存储的过程名称。在该列中插入值时,我想确保该名称的存储过程存在于数据库中。
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) 以很好地格式化和语法高亮!
-
附带说明:我会使用
sys.procedures而不是sys.sysobjects- 首先,您所做的更清楚,其次,您不必定义对象类型来检查 - 很明显这是您正在寻找的程序
标签: sql-server database constraints