更改表以在特定列之前添加列

时间:2013-11-14 11:26:27

标签: mysql alter

说我有这种结构:

col1 | col2 | col3 | col4 | created | createdby

我想在col4之后添加一列,但有一些问题。可能有任意数量的“Col”列,因此使用AFTER不是一个选项(我永远不会知道它后面的)。所以,当然,我可以做BEFORE created,对吧?这不起作用:

ALTER TABLE table ADD extracol VARCHAR(255) BEFORE created

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

3 个答案:

答案 0 :(得分:1)

不幸的是你不能这样做

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

没有简单的方法

答案 1 :(得分:0)

ALTER TABLE tablename ADD columnname INT after anothercolumn

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

答案 2 :(得分:0)

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

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

ALTER TABLE table ADD extracol VARCHAR(255) AFTER created

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

ALTER TABLE table MODIFY created DATETIME AFTER extracol

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