下页丶莫 2023-05-09 20:01 采纳率: 25%
浏览 21
已结题

oracle事务相关问题

如procedure所示,要向TEST_DATA表中根据时间增量集成数据,先集成到T_TEST_DATA,
再集成到TEST_DATA (T_TEST_DATA是临时表,TEST_DATA 是正式表);

问题1:先向T_TEST_DATA 中集成这一步骤有必要要吗?先向T_TEST_DATA集成,再向TEST_DATA 集成,和不要 T_TEST_DATA 表,
直接向TEST_DATA 中集成有什么区别?

问题2: 集成的是 2023-05-01 到 2023-05-08的数据,从删除TEST_DATA表中 2023-05-01 到 2023-05-08的数据,再到从 T_TEST_DATA 表中集成进来,这是一个事务, 从commit到这个事务完成耗时久吗?
在这个事务进行的过程中,进行到 删除TEST_DATA表中 2023-05-01 到 2023-05-08的数据
或者 正在向TEST_DATA插入数据 的时候,此时select TEST_DATA表中 2023-05-01 到 2023-05-08的数据,是能查到数据的对吗?因为事务还没完成?
换句话说,会不会存在一种情况,在commit到这个事务完成过程中,刚好需要select TEST_DATA表中 2023-05-01 到 2023-05-08的数据,导致查询的数据为空??

img

  • 写回答

2条回答 默认 最新

  • 要不要长胖_ 2023-05-10 14:10
    关注

    对于问题1,使用T_TEST_DATA作为临时表的主要优点是可以在这个表上进行测试和调试,以确保数据的正确性和完整性。此外,使用临时表还可以在多个步骤之间分离数据的处理,从而使代码更加可读和易于维护。

    另一方面,如果数据量较小或没有特殊要求,可以直接将数据插入到TEST_DATA表中,而不需要使用T_TEST_DATA作为中间表。

    对于问题2,当使用事务进行数据处理时,删除或插入数据的操作不会立即生效,直到事务被提交才会生效。在这个过程中,如果需要select TEST_DATA表中2023-05-01到2023-05-08的数据,它们是不可用的,因为它们已经被删除或正在被替换。

    因此,在使用事务处理数据时,如果需要在同一事务中删除和插入数据并查询相关数据,则应该在事务提交之前完成所有操作。否则,将出现查询不到相关数据的情况。事务处理的时间取决于处理的数据量以及系统的性能,可能会比较耗时。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月15日
  • 已采纳回答 6月7日
  • 创建了问题 5月9日

悬赏问题

  • ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused
  • ¥20 关于web前端如何播放二次加密m3u8视频的问题
  • ¥20 spring boot集成mqtt的使用问题
  • ¥15 使用百度地图api 位置函数报错?
  • ¥15 metamask如何添加TRON自定义网络
  • ¥66 关于川崎机器人调速问题
  • ¥15 winFrom界面无法打开
  • ¥30 crossover21 ARM64版本安装软件问题
  • ¥15 mymetaobjecthandler没有进入
  • ¥15 mmo能不能做客户端怪物