繁体   English   中英

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

[英]Altering table to add column before specific column

说我有这个结构:

col1 | col2 | col3 | col4 | created | createdby

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

ALTER TABLE table ADD extracol VARCHAR(255) BEFORE created

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

不幸的是你做不到

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

没有简单的方法

ALTER TABLE tablename ADD columnname INT在另一列之后

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

这是可能的,但它需要两个查询,并且几乎没有“开箱即用”的想法:

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

ALTER TABLE table ADD extracol VARCHAR(255) AFTER created

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

ALTER TABLE table MODIFY created DATETIME AFTER extracol

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM