Navicat Premium 操作MySql 取消自动提交(取消自动commit)

今天同事在使用Navicat Premium 操作MySql时,想执行某条件的SELECT语句查询是否有数据,没注意粘贴的是 DELETE 语句,点击执行后意识到问题 ,立即执行rollback,再查询发现数据还是被删掉了。然后就想将Navicat Premium 自动提交给取消,防止之后再发生此类情况。
查询了下 Navicat Premium 软件本身没找到可设置取消自动提交的选项,从MySql 的角度看有没有解决方式。先说结论:
将执行DML语句时,在SQL语句前设置 set autocommit = 0; 即取消MySql 的自动提交,举例:

set autocommit = 0;
delete from table1 where id =xxx;
commit;  or  rollback;

该方式可使Navicat Premium 不自动提交SQL语句,生效需要手动commit 或者 rollback
需要注意的是:该方式的生效范围为session 级别,即重新登录,或者打开新的查询页面,都需要单独设置该参数,否则使用的还是MySql 的默认设置
MySql 的默认设置,可通过以下语句查看。

show variables like 'autocommit'

下面为当时的实验步骤:
(1)查看MySql默认commit 设置,ON为自动提交
在这里插入图片描述

(2) 创建测试表并插入基础数据

create table testrollback(
id int,
info varchar(200)
);

insert into testrollback values (1,'info1');
insert into testrollback values (2,'info2');
insert into testrollback values (3,'info3');
insert into testrollback values (4,'info4');

(3) 同时执行以下查询-删除数据-查询结果-执行rollback-查询结果 语句

select * from testrollback ;
delete from testrollback where id =4;
select * from testrollback ;
rollback;
select * from testrollback ;

3次查询结果分别如下:
第一次:
在这里插入图片描述
第二次:
在这里插入图片描述
第三次:
在这里插入图片描述
可以发现,删除后执行的rollback 并未生效,id=4 的数据还是被删掉了。

(4) 设置 autocommit - 删除数据-查询结果-执行rollback-查询结果 语句
同时执行如下语句:

set autocommit = 0;
delete from testrollback where id =3;
select * from testrollback ;
rollback;
select * from testrollback ;

2次查询结果分别如下:
第一次:
在这里插入图片描述
第二次:
在这里插入图片描述
这时发现, delete 后 的rollback语句生效了,达到了想要的效果。

这时查看

show variables like 'autocommit'

属性已设置为 OFF
在这里插入图片描述

重新打开查询界面或重新登录后,该属性依旧为 ON ,即该设置为 session 级别,重新登录,或者打开新的 查询页面,都需要单独设置。

### 如何使用 Navicat 进行批量插入生成假数据 #### 使用存储过程批量插入 Oracle 测试数据 为了高效地向数据库中插入大量测试数据,可以利用 SQL 存储过程来完成这一操作。下面是一个针对 Oracle 数据库创建并执行存储过程的例子: ```sql CREATE OR REPLACE PROCEDURE generate_test_data AS i INT := 0; BEGIN WHILE i < 5000 LOOP INSERT INTO SYSINFO (CODEKEY, CODEVALUE, CREATETIME, REVERSE1) VALUES ('listName' || TO_CHAR(i), '哈哈哈', SYSDATE, NULL); i := i + 1; END LOOP; END; / EXECUTE generate_test_data; ``` 这段代码定义了一个名为 `generate_test_data` 的存储过程,在循环体内通过拼接字符串构建唯一的键值,并将其与其他字段一起插入到表中[^3]。 #### 利用 Navicat 图形界面工具简化批处理流程 除了编写复杂的脚本外,Navicat 提供了直观易用的操作方式来进行批量插入工作。以下是具体步骤说明: - **打开目标表格**:连接至相应的数据库实例后找到要填充的数据表。 - **启用编辑模式**:点击顶部菜单栏中的“编辑”按钮切换进入可修改状态。 - **准备样本记录**:手动输入一条或多条作为模板的基础记录;这些将成为后续复制扩展的对象。 - **应用宏命令**:选择已有的某几列内容右击调出上下文菜单选项里的“重复”,设置好增量数目以及变化规律(比如编号递增),最后确认提交即可一次性增加多笔新纪录[^1]。 这种方法不仅适用于 Oracle,也兼容其他多种主流关系型数据库管理系统如 MySQL、PostgreSQL 等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值