我正在使用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