MySQL只读事务可以修改表

时间:2018-10-20 08:27:43

标签: mysql sql

我试图在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);

1 个答案:

答案 0 :(得分:0)

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

不要将DDL放入事务中,这会使事情变得复杂。

SET @@ transaction_read_only = true;仅适用于下一次交易;而SET @@ session.transaction_read_only = true适用于会话。