MySQL 只读事务可以修改表



我正在尝试在MySQL中使用只读事务,我很困惑它如何修改(插入表(并可以更改表列(DDL和DML(。 示例 :

SET @@transaction_read_only=true;
start transaction ;
insert into Table_NAME (ID,name) values (3,'test');
ALTER TABLE Table_Name MODIFY COLUMN name VARCHAR (1000);
commit ;

谁能解释一下这里出了什么问题?


更新:我正在使用datagrip,我发现问题出在mysql shell的DataGrip上,这不起作用:insert into Table_NAME (ID,name) values (3,'test');

但是这仍然有效:

ALTER TABLE Table_Name MODIFY COLUMN name VARCHAR (1000);

ALTER TABLE 将导致隐式提交,因此这将是另一个事务。

不要把DDL放在交易中,这会让事情变得复杂。

SET@@transaction_read_only=true;仅适用于下一个事务;而 SET @@session.transaction_read_only = true 适用于会话。

最新更新