【发布时间】:2017-03-03 17:38:11
【问题描述】:
在 SQL 表中,我将列作为 Start_Date、End_Date 和 IsActive。
在每次插入时,Start_Date 都有一个有效的日期时间条目,End_Date 为 Null,IsActive 为 0。
30 分钟后,我需要将 End_Date 更新为当前日期时间,并将 IsActive 更新为 1。这是在 SQL Express 中。我不能使用作业调度程序。我不喜欢使用 Windows 任务计划程序。
触发器有插入或更新后的限制。有办法处理吗?
【问题讨论】:
-
为什么不能使用调度器?您在这里有两个选择....要么只是在插入期间设置值,要么使用计划任务。可悲的是,这有点奇怪。为什么你只是盲目地在 30 分钟内更新 End_Date?这是没有意义的。它只是假设它必须有效。这比将来创建行时将值设置为 30 有什么好处?
-
您可以使用 Service Broker 队列激活的存储过程以及会话计时器 (msdn.microsoft.com/en-us/library/ms187804.aspx)。
-
该行记录使用 30 分钟的逻辑.. 30 分钟后,该行记录将处于非活动状态。所以我需要设置 end_date 时间戳
-
那么为什么不直接设置插入行的日期呢?这将比以后更新更容易、更准确。
-
为什么同时需要 InactiveDate 和 IsActive? InactiveDate 早于它不再处于活动状态的当前日期还不够吗?不过我有点困惑,您声明您希望 IsActive 变为 1。我的猜测是这是一个位列,通常 1 表示真,但在这种情况下 IsActive 会是假的,对吧?所以它应该变成0,或者正如我已经说过的,这个专栏似乎是多余的。
标签: sql-server sql-server-express