我正在创建一个带有会员表格的图书馆管理应用程序。
会员类型是:
现在我在SQL SERVER 2008中设计了一个表,其中包含:
状态包含会员的M
或过期会员的E
。
现在我想让这项任务自动发生。
例如,如果成员资格的截止日期是昨天,则应自动将状态更改为E
。
我该怎么做?
答案 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 Job和schedule来更新状态标记。这是一个overview,可以帮助您开始使用它。
评论:我不确定您是否将此数据库视为具有此要求的独立数据源。更新此状态标志看起来更像是一个商业案例。如果您稍后更新过期日期会发生什么?您还必须更新该状态标志。您可能希望您的应用程序改为解释过期日期。
谢谢, - 汤姆