假设我有这个结构:
col1 | col2 | col3 | col4 | created | createdby
我想在
col4
之后添加一栏,但是有一些问题。可能有任意数量的“Col”列,因此使用 AFTER
不是一个选项(我永远不知道它后面会出现 什么)。所以,很自然地,我认为我可以做BEFORE created
,对吗?嗯,这行不通:
ALTER TABLE table ADD extracol VARCHAR(255) BEFORE created
有办法让它工作吗?我刚刚收到无效语法错误。我希望如果我可以添加一列
AFTER
特定列,那么我就可以做到BEFORE
但显然情况并非如此?
这是可能的,但需要两次查询和很少的“开箱即用”思考:
首先在我们真正想要的列之前插入新列:
ALTER TABLE table ADD extracol VARCHAR(255) AFTER created
然后使用另一个 alter 命令将前一列移到新列之后。您需要为此处的另一列选择正确的列类型:
ALTER TABLE table MODIFY created DATETIME AFTER extracol
未经测试。在测试或运行之前备份所有数据。
如果您确实希望它们按特定顺序排列,则必须创建一个包含按该顺序排列的列的新表,并复制现有数据或重命名列
没有简单的方法
上述语法在 MySQL 中有效,但在 SQL Server 中无效。