自动更新状态列

时间:2009-07-08 04:10:37

标签: c# sql-server-2008

我正在创建一个带有会员表格的图书馆管理应用程序。

会员类型是:

  1. 半年
  2. 每年
  3. 赞助人(15分钟)
  4. 终身会员
  5. 现在我在SQL SERVER 2008中设计了一个表,其中包含:

    1. 成员Id
    2. 名称
    3. 加入日期
    4. 到期日期
    5. 状态
    6. 状态包含会员的M或过期会员的E

      现在我想让这项任务自动发生。

      例如,如果成员资格的截止日期是昨天,则应自动将状态更改为E

      我该怎么做?

4 个答案:

答案 0 :(得分:2)

使用截止日期NULL作为您的终身会员资格。然后,create a SQL Server Agent job启动以下语句并每15分钟(或5)运行一次:

UPDATE 
    Membership 
SET 
    Status = 'E' 
WHERE 
    Status = 'M' AND ExpirationDate < getdate() 
    AND ExpirationDate IS NOT NULL 

答案 1 :(得分:1)

如何使用计算列?

在表设计器中选择您的状态列,转到列属性并选择节点“计算列规范”。在那里输入公式:

CASE WHEN ExpirationDate IS NOT NULL AND ExpirationDate < GETDATE() THEN 'E' ELSE 'M' END

唯一不利的是,它无法编入索引。

答案 2 :(得分:0)

如果要将记录加载到对象中,为什么不使用对象的属性向您显示“member”/“expired”?

这种自动操作并不适合持久数据存储。如果您确实需要,可以使用Greco建议的计算列,并且正确指出这可能会导致性能问题。

答案 3 :(得分:-1)

您可以每晚运行create a SQL Jobschedule来更新状态标记。这是一个overview,可以帮助您开始使用它。

评论:我不确定您是否将此数据库视为具有此要求的独立数据源。更新此状态标志看起来更像是一个商业案例。如果您稍后更新过期日期会发生什么?您还必须更新该状态标志。您可能希望您的应用程序改为解释过期日期。

谢谢, - 汤姆