如何更改具有依赖默认约束的 T-SQL FUNCTION?

Posted

技术标签:

【中文标题】如何更改具有依赖默认约束的 T-SQL FUNCTION?【英文标题】:How do I alter a T-SQL FUNCTION with a dependent default constraint? 【发布时间】:2014-04-02 14:06:49 【问题描述】:

我运行下面的 T-SQL 脚本 (ALTER) 并得到:

Cannot ALTER 'dbo.MyFunction' because it is being referenced by object 'DF_MyTable_SomeValue'

例如,来自这样的语句:

ALTER FUNCTION [dbo].[MyFunction] ()
RETURNS INT
AS
BEGIN
    RETURN 1
END

有没有一种简单的方法来改变具有依赖表 DEFAULT 约束的 FUNCTION?

【问题讨论】:

容易吗?是的。方便的?没那么多。脚本约束。丢弃约束。改变功能。重新应用约束。 【参考方案1】:

抱歉,没有简单的方法来做到这一点

在更改 UDF 之前,您确实需要删除引用 UDF 的默认约束。 (或者只是在更新 UDF 引用时更改约束)。

发生这种情况是因为引擎担心您会因为您动态更改默认约束而搞砸事情(该东西应该在插入时计算值,而插入可能会在您更新它时发生)。

【讨论】:

以上是关于如何更改具有依赖默认约束的 T-SQL FUNCTION?的主要内容,如果未能解决你的问题,请参考以下文章

使用 T-SQL Merge 语句时如何避免插入重复记录

T-SQL基础之外键约束

T-SQL:如何使单元格值唯一?

如何制定 T-SQL 以避免主键约束?

添加默认约束的命令

添加默认约束的命令