Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何使用检查约束引用的用户定义函数编写T-SQL升级脚本_Sql Server_Tsql - Fatal编程技术网

Sql server 如何使用检查约束引用的用户定义函数编写T-SQL升级脚本

Sql server 如何使用检查约束引用的用户定义函数编写T-SQL升级脚本,sql-server,tsql,Sql Server,Tsql,我正在尝试编写一个脚本,无论用户定义的函数是否已经存在,它都可以运行。根据,我有以下几点: IF OBJECT_ID('dbo.fn_myFunc') IS NOT NULL DROP FUNCTION dbo.fn_myFunc; go CREATE FUNCTION fn_myFunc ( ... ) RETURNS BIT AS BEGIN ... END go 问题是,后来,我 ALTER TABLE my_table ADD CONSTRAINT my_ta

我正在尝试编写一个脚本,无论用户定义的函数是否已经存在,它都可以运行。根据,我有以下几点:

IF OBJECT_ID('dbo.fn_myFunc') IS NOT NULL
    DROP FUNCTION dbo.fn_myFunc;
go

CREATE FUNCTION fn_myFunc (
    ...
) RETURNS BIT AS
BEGIN
    ...
END
go
问题是,后来,我

ALTER TABLE my_table
ADD CONSTRAINT my_table_chk_myFunc CHECK (dbo.fn_myFunc(...) = 1)
go
所以当下降函数发生时,我得到

无法删除函数“dbo.fn\u myFunc”,因为它正被对象“my\u table\u chk\u myFunc”引用

我试过,而不是用…不是空滴。。。使用…创建函数为空创建。。。改变函数,但要么语法错误,要么它不起作用


如何最好地绕过此限制?

该函数用于该检查约束-因此,您不能删除它。您需要先删除CHECK约束,然后删除您的函数!是的,我知道。但是我想要一种动态的方法来查找对函数的所有引用,这样我就可以删除它们并在以后重新创建它们,或者想要一种方法来检测它是否已经存在并只使用alter。看一看-这可能就是您想要的-在EXEC语句中包装alter并创建定义。检查此链接