oracle表中更新的行数

时间:2018-09-26 04:57:02

标签: database oracle plsql

我有一个名为t1的表,该表已由文件更新。我有表t2,它是在修改前为表t1创建的备份。现在我想知道表t1中更新了多少条记录。无论如何,我可以加入备份表并知道更改了多少记录?或者如何在已经更新的表上使用sql%rowcount函数?还是应该继续进行ALL_TAB_MODIFICATIONS

1 个答案:

答案 0 :(得分:0)

您可以将表连接到它们的主键上(希望您没有更新该表!),然后比较每列。.您还必须检查null,这将使很多打字。不过,您可以使用all_tab_cols和一些sql创建查询(编写一个将sql作为输出输出的sql)

实际上,考虑到这一点,您可以通过自然地将表连接在一起以获得一组不变的行并将其从原始全套中删除,从而减少键入次数。

let gradientView = VerticalGradientView()
gradientView.frame = CGRect(0,0,100,100)
gradientView.topColor = .black

let label = UILabel()
gradientView.addSubview(label)

我从来没有做过,但是理论上自然联接在所有相等的列名上联接,因此每个表的每一列都将具有联接条件。这是一个内部联接,因此将仅表示未更改的列。任何变为空或从空值开始的列也将消失。因此,这是一组未更改的行。如果只需要计数,则对原始表进行计数,然后减去此联接结果的计数。如果您想知道哪些行已更改,请减去结果集。

理想情况下,您不应该这样做;而是在运行更新时捕获受影响的行数。但是,可以在执行更新后很长时间(但是在运行其他更新之前)使用此技术