KingbaseES V8R6 ksql 关闭自动提交

2022/7/16 2:22:37

本文主要是介绍KingbaseES V8R6 ksql 关闭自动提交,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

背景

用过oracle或mysql的人都知道,做一个dml语句,如果发现做错了,还可以rollback,但在Kingbase ksql 中,如果执行一个dml,没有先运行begin; 的话,一执行完就马上提交了,不能回滚,(因为默认自动提交是开启的)这样容易导致误操作的发生,有没有什么办法避免这个风险呢?答案是关闭自动提交。

在KingabseESV8R6中 autocommit功能默认是开启的。

test=# \echo :AUTOCOMMIT;
on;

在被设置为on(默认)时,每一个 SQL 命令在成功完成时会被自动提交。在这种模式中要推迟提交,必须输入一个BEGIN或者START TRANSACTION SQL 命令。当被设置为off或者被重置时,在显式发出COMMIT或者END之前,SQL 命令不会被提交。

test=# \set AUTOCOMMIT off;
test=# \echo :AUTOCOMMIT;
off;

这个简单的命令禁用会话的自动提交。关闭自动提交后,dml可以回滚。当退出会话就会失效。注意ddl的回滚功能无关自动提交功能。

全局关闭自动提交

用root用户找到ksqlrc.sample文件

img

将sample 拷贝到 数据库配置目录etc下并改名为ksqlrc

img

在ksqlrc文件中加入\set AUTOCOMMIT off 注意AUTOCOMMIT要大写

img

并重启数据库服务后。查看已经关闭了自动提交功能

img



这篇关于KingbaseES V8R6 ksql 关闭自动提交的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程