oracle触发器,update一张表时,将update的那一行数据中的部分值更新到另一张表。字段定义一样

oracle触发器,update一张表时,将update的那一行数据中的部分值更新到另一张表。字段定义一样,第1张

1、首先创建测试的原表A。

2、插入原表A测试数据,执行完SQL后,记得点击commit按钮,否则,数据不会持久化到数据库

3、【创建表结构与数据】此处不需要commit动作。

4、【同字段仅数据】。

5、【不同字段仅数据】,执行完SQL后,记得点击commit按钮,否则,数据不会持久化到数据库。

6、最后效果如下图,这样就完成了。

首先要区分具体情况,虽然表里有几百万几千万的数据量,但是update是同时update这几百万条的数据呢?还是只更新其中某几条? 更新的数据量不同,解决方案自然也就有差异。同时update几百万数据,这个sql的性能影响在于数据库会做回滚段,以便异常时rollback。由于数据量大,性能就浪费在回滚段上了。 所以有2个方案供参考:

1. update时 ,禁用回滚段的生成,跟你前面说的nologing应该是一个意思

2. 分批更新,比如每更新10W条数据,就执行一次commit,这样效率也会比原来的要快。

这是个什么问题?不详细啊。分2种情况吧,第1种,更新数据库里的数据,用update语句,比如 update table1 set ***='测试数据'然后再 commit第2种,更新数据库软件,就是下载软件补丁包,然后给数据库打补丁。

以上举例为oracle数据库,如果是mysql之类的数据库,语法可能会不同,自己上网上查询吧。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10008186.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存