mysql - SQL:插入过期行

标签 mysql sql

有没有办法在 SQL 中插入一个过期的行(c.f. 你可以使用 Memcached 插入一个在一分钟内过期的新键)?

上下文是我想要一个集成测试将行插入数据库,但我不想自己删除它们,因为它被许多人共享。这些删除查询必须是手动的,或者它们可能不会运行,或者它们可能有灾难性的拼写错误等。如果可以的话,我希望系统为我做这件事(即自动、高效和经过良好测试)。

(我假设这不是 SQL 标准的一部分,答案是否定的。)

相关:SQL entries that expire after 24 hours

相关:What is the best way to delete old rows from MySQL on a rolling basis?

背景:我无法对数据库架构或任何相关基础架构进行任何更改。

最佳答案

如果您正在进行单元测试,我建议将每个单元测试包装在 BEGIN TRAN/ROLLBACK 中。

由于您正在进行集成测试,您可能需要数据存在于单个事务的范围之外。 SQL Agent 在这里可以正常工作,只是它不会区分测试数据和真实数据。但是,您可以通过INSERT将一些标识符添加到要在到期时删除的特定记录来解决这个问题。这可以在单个存储过程中完成..

您可以使用 SQL Server Service Broker 来完成此操作.我没有使用过服务代理,但也许有一种方法可以延迟消息处理,直到特定时间过去。

关于mysql - SQL:插入过期行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22620272/

相关文章:

mysql - 允许非 SELECT 权限用户运行具有 SELECT 查询的 MySQL 存储过程

php - 检查数据库连接是否关闭 - php

sql - 如果只有子记录满足特定条件,则内部联接并检索父记录

Python PyQt5 : Can I also insert a QPushButton into a database via SQL?

mysql - 非常复杂的 Group By/Unique/Limit by SQL 命令

mysql - 登录用户时奇怪的 nodejs 行为

sql - 根据 Postgres 中匹配条件的行数有条件地插入

php - 为 SQL 参数提供占位符值

MySQL - 带有连接表的 GROUP_CONCAT() - 意外结果

sql - 如果记录已存在,则停止在表中插入