MySQL 具有架构修改语句 (DDL) 的事务?
MySQL transactions with schema modification statements (DDL)?
尽管提交或回滚,但两种情况下的更改都是 "commited"。
提交:
START TRANSACTION;
ALTER TABLE `bank` CHANGE COLUMN `bank_active` `bank_activated` BOOLEAN NOT NULL;
COMMIT;
回滚:
START TRANSACTION;
ALTER TABLE `bank` CHANGE COLUMN `bank_active` `bank_activated` BOOLEAN NOT NULL;
ROLLBACK;
需要构建一个自动更新程序,其中包括数据库的模式和数据更新,并希望将所有内容分组到一个事务中,所以如果出现任何问题,只需修复语句并再次 运行。
是否可以在事务中回滚 DDL 语句?
谢谢
BEGIN
在某些情况下与 START TRANSACTION
.
相同
phpmyadmin 一次执行一个查询,除非您为此将批处理放在 window 中。试试看。
(与 SET autocommit = 0
无关,因为显式 START
。)
编辑
因为 "transaction" 确实有一个 DDL 语句,所以我的 'answer' 是无关紧要的。
无法回滚 DDL:https://dev.mysql.com/doc/refman/5.7/en/cannot-roll-back.html
尽管提交或回滚,但两种情况下的更改都是 "commited"。
提交:
START TRANSACTION;
ALTER TABLE `bank` CHANGE COLUMN `bank_active` `bank_activated` BOOLEAN NOT NULL;
COMMIT;
回滚:
START TRANSACTION;
ALTER TABLE `bank` CHANGE COLUMN `bank_active` `bank_activated` BOOLEAN NOT NULL;
ROLLBACK;
需要构建一个自动更新程序,其中包括数据库的模式和数据更新,并希望将所有内容分组到一个事务中,所以如果出现任何问题,只需修复语句并再次 运行。
是否可以在事务中回滚 DDL 语句?
谢谢
BEGIN
在某些情况下与 START TRANSACTION
.
phpmyadmin 一次执行一个查询,除非您为此将批处理放在 window 中。试试看。
(与 SET autocommit = 0
无关,因为显式 START
。)
编辑
因为 "transaction" 确实有一个 DDL 语句,所以我的 'answer' 是无关紧要的。
无法回滚 DDL:https://dev.mysql.com/doc/refman/5.7/en/cannot-roll-back.html