【问题标题】:MS SQL Entries that expire after 24 hours24 小时后过期的 MS SQL 条目
【发布时间】:2013-06-06 16:51:54
【问题描述】:

基于我尝试使用的解决方案here

CREATE EVENT delete_expired_101
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 24 HOUR DO
DELETE FROM my_table WHERE id = 101;

在我的 php 查询中,但它似乎不起作用并且给了我无效的语法。你能给我推荐一个方法吗?

注意我使用的是 MS SQL 而不是 MySQL。

【问题讨论】:

  • 那与 T-SQL 不兼容。您将必须构建一个流程来根据时间戳删除数据,该时间戳存储为表上的列。这可能只是一个存储过程,用于清除超过 24 小时的数据并由 SQL 代理作业调用。
  • 所以你的意思是我必须使用 sql 代理作业? X_X
  • 如果是这样,您至少能给我正确的详细程序吗?我真的很感激。
  • 简单如:DELETE FROM my_table WHERE DateValue >= DATEADD(hh,-24, GETDATE()) 我们应该像这样创建表:CREATE TABLE my_table (DateValue DATETIME DEFAULT GETDATE(), Column1,第 2 列,...)

标签: php sql-server


【解决方案1】:

您需要使用 SQL 代理。该逻辑可以是每 24 小时触发一次的 SQL 代理作业,该作业删除日期时间小于 DATEADD(d,-1,getdate()) 的任何数据。请对如何实现 SQL 代理做一些研究。如果您需要有关根据日期时间值删除表中数据的代码方面的帮助,请打开一个包含该表架构的新问题。

【讨论】:

  • 还有其他方法可以针对 SQL Server 数据库运行代码,但不是通过创建“事件”
  • 我可能会选择使用 DELETE 脚本,而不是添加一列,因为将存储初始时间戳。感谢所有建议。
【解决方案2】:

我将通过使用删除功能选择@Chris H 的建议并设置一个记录时间戳的表列。

感谢大家的帮助

【讨论】:

    猜你喜欢
    • 2012-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-10
    • 1970-01-01
    • 2018-12-27
    相关资源
    最近更新 更多