gpt4 book ai didi

sql-server - 添加检查存储过程是否存在的约束

转载 作者:搜寻专家 更新时间:2023-10-30 21:48:18 24 4
gpt4 key购买 nike

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

但这给出了以下错误

Subqueries are not allowed in this context. Only scalar expressions are allowed.

我该怎么做。

最佳答案

允许的功能:

create function dbo.IsProcedure(@ProcName sysname) returns bit as
return (SELECT COUNT(*) FROM sys.sysobjects
where id = object_id(MyColumn) and OBJECTPROPERTY(id, N'IsProcedure')=1);
go

ALTER TABLE MyTable WITH CHECK ADD CONSTRAINT [CK_MyTable_MyColumn]
CHECK (dbo.IsProcedure(MyColumn) = 1);

关于sql-server - 添加检查存储过程是否存在的约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4212308/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com