有没有办法在 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/