lightdb关闭事务自动提交

在lightdb/pg中,事务是自动提交的,也就是除非明确通过BEGIN;开启事务,否则任何语句都是独立事务。在ltsql客户端,可以通过\echo :AUTOCOMMIT查看自动提交模式,如下:

因为ltsql是客户端工具,不是libpq/ltjdbc实现,所以它不具典型意义。

强制自动提交,无参数控制有个缺点,对于一些oracle/mysql不会提交的场景也会自动提交,而我们认为它不会提交。如explain analyze,如下:

explain analyze实际上被提交了,而如果数据被修改后和原来的数据不唯一,就可能无法恢复。这是非常麻烦的。

要正确执行更新,需要先BEGIN,然后rollback,如下:

因为这很难控制,因此lightdb在内核中基于隐藏字段实现自动更新时间戳,能够记录行最后更新时间,这样能够做到恢复。如下:

Original: https://www.cnblogs.com/zhjh256/p/16366789.html
Author: zhjh256
Title: lightdb关闭事务自动提交

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/554506/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球