我正在尝试在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 适用于会话。