【发布时间】:2014-05-13 10:18:59
【问题描述】:
我是 SQL 事务的初学者(实际上是新手),所以我可能遗漏了一些明显的东西。
我有这个 SQL 代码,我正在尝试通过 phpMyAdmin 运行:
START TRANSACTION;
INSERT INTO `users` VALUES(NULL, 'User A', 'user.a@example.com', '4', 'User A');
INSERT INTO `users` VALUES(NULL, 'User B', 'user.b@example.com', '3', 'User B');
ALTER TABLE `users` CHANGE `level` `level` TINYINT(3) UNSIGNED NOT NULL;
ALTER TABLE `users` CHANGE `number` `number` INT(10) UNSIGNED NOT NULL;
ALTER TABLE `users` ADD COLUMN `number` INT(10) UNSIGNED NOT NULL AFTER `id`;
COMMIT;
第二个ALTER 导致#1054 - Unknown column 'number' in 'users' 错误。
但是,当它发生在 phpMyAdmin 中时,我可以看到,前两个 INSERTs(或整个事务)没有回滚。 users 表确实包含两条新记录。
我错过了什么? phpMyAdmin 不支持事务?或者我不明白,事务实际上是如何工作的,这很正常,这两个INSERTs 在出错的情况下不会回滚?
【问题讨论】:
-
FWIW 这在 Postgres 中运行良好,这也是一些人更喜欢 Postgres 而不是 MySQL 的原因之一。
标签: mysql sql transactions phpmyadmin rollback