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

21 浏览
0 Comments

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

我正在尝试编写一个脚本,无论用户是否已定义函数,都可以运行。根据此链接,我有以下内容:

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

所以当发生DROP FUNCTION时,我会得到以下错误信息:

无法删除函数'dbo.fn_myFunc',因为它被对象'my_table_chk_myFunc'引用。

我尝试过使用...IS NOT NULL DROP... CREATE FUNCTION而不是使用...IS NULL CREATE... ALTER FUNCTION,但是要么我语法写错了,要么它不起作用。

我应该如何解决这个问题?

0