【问题标题】:auto update of a field when new year begins SQL新年开始时自动更新字段 SQL
【发布时间】:2016-03-27 03:31:21
【问题描述】:

我的 leavemaster 表中有一个字段“总字段”。现在我的要求是自动更新此字段以在新年开始时增加 15 天,即 1 月 1 日。我想通过触发器来使用它。但是当我尝试实现它时它没有帮助。 谁能帮我做到这一点?有没有其他想法可以做到这一点 提前谢谢...

我已经创建了如下的bat文件:

SQLCMD -E -Timesheet -ic:\BAT\UpdateTotalLeave.sql

我的sql文件如下:

UPDATE empTable SET TotalLeave = TotalLeave + 15

我如图所示设置了 Windows 任务调度程序(我设置了今天的测试日期和时间),但未在表格中更新。

bat 文件或我的任务调度程序是否有任何错误? 谢谢

【问题讨论】:

  • 您使用的是什么数据库?您是否希望数据库在 1 月 1 日发生时识别出来,然后自动更新每一行的 Total 字段?
  • 您是总是想增加 15 天,还是只增加特定日期范围?顺便说一句,我认为触发器可能是这里的方法。
  • 是的,每年开始我需要增加 15 天。即我在休假管理工作。所以,在这里,员工的可用假期应该在新年增加 15 天
  • 在 ERP 中,这通常是通过某种周期翻转功能来完成的,您决定现在是新的一年,按下一个按钮,所有类似的事情都会被处理。触发器在这里无济于事。在新的一年里什么都不会被“触发”。

标签: sql sql-server-2008 date datetime triggers


【解决方案1】:

我认为您可以编写一个 SQL 服务器代理作业,该作业在每年 1 月 1 日运行,并根据您的条件更新所需的表。

SQL 触发器在这种情况下可能没有帮助,因为触发器适用于插入/更新/删除操作。

【讨论】:

  • 感谢您的回复。我想使用 SQL 服务器代理作业。但是在我们的服务器中,只有 express 版本可用(无法运行 SQL server 代理作业).. 那么如何做到这一点
  • hm.. 然后您必须编写一个批处理文件并将该批处理文件添加到 Windows 计划任务中。您可以使用 sqlcmd 实用程序来完成这项工作。我没有尝试使用 sqlcmd 实用程序。可以参考Link
  • 有多个 cmd 可用。哪个是(osql 或 sqlcmd)最好的
  • 看起来 sqlcmd 比 osql 具有高级功能。你可以去sqlcmd。
  • 1) 创建一个带有 UPDATE stmts 的 sql 文件到相应的表。 2) 使用您的环境详细信息以及步骤 1 .sql 文件创建一个批处理文件 3) 使用 Windows 任务计划程序调用该批处理文件。
【解决方案2】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-10
    • 1970-01-01
    • 2012-08-06
    • 1970-01-01
    • 2012-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多