MySQL 隐式提交示例
MySQL 隐式提交示例
START TRANSACTION;
INSERT INTO t (id) VALUES (1);
CREATE TABLE tmp_x (id INT); -- 隐式提交:上面的 INSERT 也一起落库
ROLLBACK; -- 无法撤销 INSERT
-- 常见隐式提交语句:CREATE/ALTER/DROP/TRUNCATE/RENAME、CREATE INDEX、GRANT 等PostgreSQL 事务性 DDL
PostgreSQL 事务性 DDL
BEGIN;
CREATE TABLE tmp_x (id int);
ALTER TABLE t ADD COLUMN note text;
ROLLBACK; -- 建表与加列都被撤销| MySQL | DDL 隐式提交;无法把 DDL 与 DML 放进同一回滚单元 |
|---|---|
| PostgreSQL | DDL 参与事务;但多数 ALTER 需要 ACCESS EXCLUSIVE 锁,执行期间阻塞读写 |
| 迁移注意 | 依赖“失败回滚”的发布脚本在 MySQL 习惯下要重新设计 |