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

问题描述 投票:0回答:3

假设我有这个结构:

col1 | col2 | col3 | col4 | created | createdby

我想在

col4
之后添加一栏,但是有一些问题。可能有任意数量的“Col”列,因此使用
AFTER
不是一个选项(我永远不知道它后面会出现 什么)。所以,很自然地,我认为我可以做
BEFORE created
,对吗?嗯,这行不通:

ALTER TABLE table ADD extracol VARCHAR(255) BEFORE created

有办法让它工作吗?我刚刚收到无效语法错误。我希望如果我可以添加一列

AFTER
特定列,那么我就可以做到
BEFORE
但显然情况并非如此?

mysql alter
3个回答
5
投票

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

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

ALTER TABLE table ADD extracol VARCHAR(255) AFTER created
然后使用另一个 alter 命令将前一列移到新列之后。您需要为此处的另一列选择正确的列类型:

ALTER TABLE table MODIFY created DATETIME AFTER extracol

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


1
投票
不幸的是你不能这样做

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

没有简单的方法


1
投票
ALTER TABLE 表名 ADD 列名 INT AFTER anothercolumn

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

© www.soinside.com 2019 - 2024. All rights reserved.