首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL删除在同一事务期间创建的列?

问SQL删除在同一事务期间创建的列?
EN

Stack Overflow用户
提问于 2018-09-01 16:54:29
回答 1查看 386关注 0票数 1

我正在使用事务对我的数据库进行修改,这样,如果在更改过程中有任何失败,我可以回滚而不会造成任何伤害。

但是,由于我基于将我的数据库置于其最后状态的查询列表来运行我的查询(每当我需要更改时,我只需向列表中添加一个新规则),所以当我尝试删除在同一事务期间添加的列时,它将失败。

示例:

代码语言:javascript
复制
START TRANSACTION;
    ALTER TABLE "servers" ADD COLUMN "test" INTEGER NOT NULL;
    ALTER TABLE "servers" DROP COLUMN "test";
COMMIT;

当我运行这个程序时,我得到了一些类似于

代码语言:javascript
复制
column "test" in the middle of being added, try again later

我理解为什么会发生这种情况,因为事务还没有提交,所以列还没有被删除。但是,是否有专门的方法可以将列放在同一个事务中呢?或至少在事务提交后将其排队删除。

我认为值得注意的是,在事务中运行的查询是使用雄辩的ORM蓝图生成的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-02 00:55:07

MySQL不支持事务中的表更改。来自文档

有些语句不能回滚。通常,这些语句包括数据定义语言(,DDL)语句,例如创建或删除数据库的语句、创建、删除或更改表或存储例程的语句。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52130330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档