是否有可能记得"某个时间点,并给它一个标识符,以便我以后可以在查询中引用它,然后从数据库中获取结果呢?
如果存在这样的机制,它有多轻量级?产生数十个"快照"是否可以接受?一秒钟?
我认为我可以通过公开其身份证的交易得到类似的内容,但我担心这太重了,我不确定交易是否可以退出,但不会被销毁。< / p>
答案 0 :(得分:1)
您无法访问未保留的数据,但有一些方法可以让您执行此类操作。如果您真的很感兴趣,请阅读有关双时态表和SQL:2011的内容。两本好书是由Richard Snodgrass撰写的在SQL中开发面向时间的数据库应用程序(也可作为free PDF on his website)和Tom Johnston的双时态数据。
this talk from 2015中描述了一种不那么学术化的方法,它不是 bi -temporal,而是允许您访问旧数据。
另一种方法,也不是双时态的,是使用temporal_tables
extension(github here)。
我认为最大的挑战是随着时间的推移随着架构的发展而处理旧数据。例如,您添加了一个新的NOT NULL
列。你怎么处理所有旧记录?据我所知,无论是在研究还是在工具中,都很少能解决这个问题。