我有一个表具有以下结构和一些值:
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。
我尝试过使用触发器,但它应该是在插入和更新等操作之后,这与我的要求相冲突。
我感谢任何帮助。感谢
答案 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中未定义这些常量。你可以使用你喜欢的任何值。