我正在为已经存在的报告撰写“预览”。现在编程时,生成报告会更改数据库(它会为订单生成发票,然后生成报告)。 现在我需要一种方法来生成报告而不更改数据库。 生成发票比删除它更容易,所以我在考虑这些问题:
这是一个好方法吗?我问,因为它似乎不像是使用交易的正确方式。
谢谢大家!!!
答案 0 :(得分:6)
这不是一个明智的解决方案。您将在表上创建锁并不必要地破坏日志。整个想法似乎非常不可扩展。
您是否可以重新编码以将GenerateInvoice
和GenerateReport
代码分隔为单独的存储过程?然后单独调用它们还是添加另一个DoBoth
存储过程?
答案 1 :(得分:2)
正如Dems所说,不建议使用交易。
我将用于此类问题的方法通常是将Param添加到我的StoredProc中以了解它是否为预览。
我会做相同的操作,但是如果它是一个插入或更新新行的存储过程,我会将相关数据拉入#TemporaryTable并编辑该数据而不是直接编辑真实表。
在我的程序结束时,我只是检查我们是否正在预览,如果我们不是,我会从#TemporaryTable插入/更新新行。