我有一个包含列(id、title、contents、publishingDateTime、status)的表(tblMessage)。publishingDateTime 列是消息发布的日期。我想在到达其发布日期时间时自动将列(状态)的值从(待发布 - 或 - 从假变为真)更改。
在 Sql Server 2005 中怎么可能?
我有一个包含列(id、title、contents、publishingDateTime、status)的表(tblMessage)。publishingDateTime 列是消息发布的日期。我想在到达其发布日期时间时自动将列(状态)的值从(待发布 - 或 - 从假变为真)更改。
在 Sql Server 2005 中怎么可能?
可能最简单的方法是根本不更改值。相反,使用计算列,其逻辑如下:
status as (case when publishingDateTime > getdate() then 'Published' else 'Pending' end)
这在create table
声明中并在此处进行了解释。
您还可以通过创建视图并通过视图对表进行所有访问来执行类似的操作(无论如何这通常是个好主意)。
例如,我的 create table 语句如下所示:
create table xxx (
-- all your columns go here
status as (case when publishingDateTime > getdate() then 'Published' else 'Pending' end)
)
对于视图,您可以执行以下操作:
create view vw_SMS as
select sms.*,
(case when publishingDateTime > getdate() then 'Published' else 'Pending'
end) as status
from SMS
实际上最好不要*
在视图中使用,而是列出所有列。
好吧,通常你的应用程序应该这样做恕我直言,
但是如果你只是想让 sql server 像这样
UPDATE tblMessage
SET status = 0
WHERE publishingDateTime <= GETDATE()
然后创建一个在预定时间内运行它的代理作业。