我有一个表,tblClient
,其中存储出生客户的日期型日期时间,DOB
的现场监测计算的数据(一个人的年龄)。在SQL Server
目标这里是,当一个客户端达到65岁(需要计算通过DOB),我需要插入一个新的记录到另一个表。
但是由于数据库事务(INSERT,UPDATE,DELETE)的原因,客户端的时间不会改变,所以触发器是没有问题的。
什么是一个好主意,montior这样的变化?
我有一个表,tblClient
,其中存储出生客户的日期型日期时间,DOB
的现场监测计算的数据(一个人的年龄)。在SQL Server
目标这里是,当一个客户端达到65岁(需要计算通过DOB),我需要插入一个新的记录到另一个表。
但是由于数据库事务(INSERT,UPDATE,DELETE)的原因,客户端的时间不会改变,所以触发器是没有问题的。
什么是一个好主意,montior这样的变化?
创建每天或每小时运行的SQL代理工作,会做这个计算与T-SQL,然后如果有人达到65它会做插入
运行一个存储计划的任务或SQL Server维护计划程序,并根据需要更新所需的行。
尽可能保持SQL Server的独立性 - 定期执行存储过程的SQL Server代理作业应该很好地完成。
您可以使用SQL Server Management Studio中为这个数据库中创建一个SQL Server代理作业:
http://www.databasedesign-resource.com/sql-server-jobs.html
建立一个日常工作,无论你需要将其命名或。
只要数据库启动并运行,JOB就会根据您设置的计划(从数据库中)运行。
我会提出另一种方法 - 每次DOB被更新(或增加)的时间,从现在开始计算周期运行的东西,直到第一人达到65。然后(重新)安排一个作业在运行时间。
而且,我不能相信你需要插入该行到达65秒,所以,计算今天的新65年年轻人似乎不够好一次的一天程序?
现在每天运行的声音足够合理我现在想起它...感谢Paul, – Sung 2010-03-03 14:56:38
65岁的新领域怎么样?在记录插入时计算一次,然后你可以查询你的心在这个领域的内容。你需要这样做是一个触发器(并且考虑到了更新,它们对于DOB字段是罕见的,但是当它们错误输入时可能)。现在我想到了一些,一个计算出来的文件可能会起作用而不是触发器。
然后运行一项日常工作,以抓住自上次作业成功运行后转为65的任何人。请务必处理这个问题,以便如果某一天工作失败,那么来自该daty的人将会在下一次运行中被选中。
之所以我认为这是每天计算每个人的年龄inyour数据库是这样的一个计算,真正只需要进行一次资源的浪费。当你有100人时没什么大不了的,当你有一百万人时是个大问题。为了确定你需要的三个是痛苦的,这样做可能会对一百万条记录产生影响。在数据输入时做一次,并不是那么糟糕。
执行检查并采取适当操作的周期性预定作业(例如存储过程)。 – 2010-03-03 14:47:44
@mjv:Mitch的评论显示在我发布我的之前。让我摆脱它。 – Sung 2010-03-03 14:57:11