我是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;
Run Code Online (Sandbox Code Playgroud)
如您所见,第二个ALTER导致#1054 - Unknown column 'number' in 'users'错误.
但是,当它发生在phpMyAdmin中时,我可以看到,前两个INSERT(或整个事务)没有回滚.该users表包含两个新记录.
我错过了什么?phpMyAdmin不支持交易?或者我不明白,交易实际上是如何运作的,这是很正常的,这两个INSERTs在发生错误的情况下不会回滚?