1

假设我有这个结构:

col1 | col2 | col3 | col4 | created | createdby

我想在 之后添加一列col4,但是有一些问题。可能有任意数量的 'Col' 列,所以使用AFTER不是一种选择(我永远不知道之后会发生什么)。所以,很自然,我虽然可以做到BEFORE created,对吧?好吧,这不起作用:

ALTER TABLE table ADD extracol VARCHAR(255) BEFORE created

有没有办法让这个工作?我只是得到一个无效的语法错误。如果我可以在AFTER特定列中添加一列,那么我会这样做,BEFORE但显然情况并非如此?

4

3 回答 3

3

这是可能的,但需要两个查询和很少的“开箱即用”思维:

首先在我们真正想要的列之后插入新列:

ALTER TABLE table ADD extracol VARCHAR(255) AFTER created

然后使用另一个 alter 命令将前一列移到新列之后。您需要在此处为​​另一列使用正确的列类型:

ALTER TABLE table MODIFY created DATETIME AFTER extracol

未经测试。在测试或运行之前备份所有数据。

于 2019-07-02T13:39:21.790 回答
2

不幸的是,你不能这样做

如果您真的希望它们按特定顺序排列,则必须按该顺序创建一个包含列的新表并复制现有数据或重命名列

没有简单的方法

于 2013-11-14T11:35:05.917 回答
0

ALTER TABLE 表名 ADD 列名 INT AFTER anothercolumn

上述语法在 MySQL 中有效,但在 SQL Server 中无效。

于 2013-11-14T11:59:33.300 回答