我是一个初学者(实际上是新手)SQL事务,所以我可能会漏掉一些明显的东西。我可以使用ALTER TABLE进行事务吗?
我有这样的SQL代码,我试图通过phpMyAdmin的运行:
START TRANSACTION;
INSERT INTO `users` VALUES(NULL, 'User A', '[email protected]', '4', 'User A');
INSERT INTO `users` VALUES(NULL, 'User B', '[email protected]', '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,我可以看到,前两个INSERT
(或整个事务)没有回滚。 users
表确实包含两个新记录。
我错过了什么? phpMyAdmin不支持交易?或者我不明白,事务实际上是如何工作的,这很正常,这两个INSERT
s在错误的情况下不会回滚?
谢谢!完美的答案。请重新编辑这个全功能的答案,这样我就可以挑选它并带给你一些代表。 – trejder