背景
用过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文件
将sample 拷贝到 数据库配置目录etc下并改名为ksqlrc
在ksqlrc文件中加入/set AUTOCOMMIT off 注意AUTOCOMMIT要大写
并重启数据库服务后。查看已经关闭了自动提交功能
原创文章,作者:sunnyman218,如若转载,请注明出处:https://blog.ytso.com/tech/database/274467.html