如何根据另一个值更新sql表列值dynamicllay?

时间:2015-11-19 12:52:32

标签: sql-server

我有一个表具有以下结构和一些值:

PK_ID Webinar_Name Start_Date Is_Active

1 w1 3/1/2016 True

2 w2 1/7/2016 True

3 w3 4/9/2016 True

现在我希望 Is_Active 列值根据日期动态更新(即: NOT 更新,插入和删除)..如果它与当前匹配日期,因此 Is_Active 列值将设置为false。

我尝试过使用触发器,但它应该是在插入和更新等操作之后,这与我的要求相冲突。

我感谢任何帮助。感谢

2 个答案:

答案 0 :(得分:3)

看起来您应该可以使用计算列,但我从未尝试过。

https://msdn.microsoft.com/en-GB/library/ms188300.aspx

我想它看起来像这样:

ALTER TABLE webinars ADD ActiveFlag AS
    CASE WHEN Start_Date = CAST(GetDate() AS date) THEN 'True'
    ELSE 'False' END

答案 1 :(得分:2)

使用计算列:

alter table t add Is_Active as (case when cast(start_date as date) = cast(getdate() as date) then 0 else 1 end)

当然,您可能需要先删除该列。

注意:这使用1表示true,0表示false。 SQL Server中未定义这些常量。你可以使用你喜欢的任何值。