我正在开发一个程序,该程序应该在每次运行时向数据库插入数百行。
问题是一旦插入的数据是错误的,我们如何从那次运行中恢复?目前我只有一个日志文件(我创建了格式),它记录了插入的原始数据(没有元数据也没有主键)。有没有一种方法可以创建数据库可以理解的日志,并且一旦我们想要撤消插入,我们就可以向数据库提供该日志文件。
或者,如果有从程序中撤消操作的替代机制,请告诉我,谢谢。
我正在开发一个程序,该程序应该在每次运行时向数据库插入数百行。
问题是一旦插入的数据是错误的,我们如何从那次运行中恢复?目前我只有一个日志文件(我创建了格式),它记录了插入的原始数据(没有元数据也没有主键)。有没有一种方法可以创建数据库可以理解的日志,并且一旦我们想要撤消插入,我们就可以向数据库提供该日志文件。
或者,如果有从程序中撤消操作的替代机制,请告诉我,谢谢。
事实上,这只有数百行,这使得它可以被所有撤消机制的曾祖母所接受:
importruns
,其中有一行。我假设它有一个整数自增 PKDELETE FROM sometable WHERE importid=$whatever
如果您也有替换/更新导入,请更进一步
superseededby
superseededby
INSERT INTO originaltable SELECT * FROM superseededtable WHERE superseededby=$whatever
您可以清理superseededtable
已知良好的进口,以确保存储不会无限增长。
你有几个选择。取决于您何时注意到错误。如果您知道数据有错误,您可以使用事务 API 回滚到当前事务的更改。
如果您稍后才知道有错误,那么您可以创建自己的日志。创建一个标识事务的索引,并将一个字段添加到将插入该 ID 的相关表中。这将允许您准确识别它来自哪个交易。您还可以创建一个存储过程,根据给定的事务 ID 删除行。