【发布时间】:2015-06-04 06:57:41
【问题描述】:
我在SQL Server 2008 中创建了一个scalar function,我在几个表的计算列中引用了同样的内容。现在我想在不删除表格的情况下更改函数。但是它会抛出一个错误:
不能 ALTER 'dbo.GetStatus' 因为它被对象引用 '订单'。
是否可以更改功能?还是我先删除并创建所有可靠的表,然后再更改函数?
这是我的功能:
CREATE FUNCTION [dbo].[GetStatus]
(
@FromDate datetime,
@ToDate datetime
)
RETURNS tinyint
AS
BEGIN
declare @ret tinyint;
if(@FromDate<=GETDATE() and (@ToDate>=GETDATE() or @ToDate is null))
set @ret= 1
else
set @ret= 0
return @ret
END
它指的是一个表格:
CREATE TABLE [dbo].[Order](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [varchar](200) NOT NULL,
[EffectiveFromDate] [datetime] NOT NULL,
[EffectiveToDate] [datetime] NULL,
[Status] AS ([dbo].[GetStatus]([EffectiveFromDate],[EffectiveToDate]))
)
【问题讨论】:
标签: sql-server calculated-columns