有没有办法在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?
背景:我无法对数据库架构或任何相关的基础架构进行任何更改。
答案 0 :(得分:1)
如果你正在进行单元测试,我建议用BEGIN TRAN
/ ROLLBACK
包装每个单元测试。
由于您正在进行集成测试,因此您可能需要将数据存储在单个事务的范围之外。 SQL Agent在这里可以正常工作,除了它不会区分测试数据和实际数据。但是,您可以通过INSERT
某些标识符来解决此问题,以便在到期时删除特定记录。这可以在一个存储过程中完成..
您可以使用SQL Server Service Broker完成此操作。我没有与服务代理合作,但也许有一种方法可以延迟消息处理,直到特定时间过去。
答案 1 :(得分:0)
为您的表添加到期日期列。创建一个工作,删除某些时间表过期的数据(比如每晚)。