簡體   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