2012-10-01 36 views
2

可能重複:
SQL Server 2008 : Cannot Insert new column in the middle position and change data type如何在表中的特定位置添加一列?

你好我使用SQL Server 2008 & 2008 R2我想在一個表中使用alter命令的特定位置添加一列。有沒有什麼方法可以在特定位置添加一列的關鍵字?謝謝!在先進的。

+2

**順便說一下:**列的順序在關係模型中是無關緊要的,您不應該在數據庫設計中考慮該順序。 –

+2

@MahmoudGamal - 我想能夠做到這一點[出於這裏的原因](https://connect.microsoft.com/SQLServer/feedback/details/739788/alter-table-syntax-for-changing-列順序) –

+1

@MartinSmith - 很好,我投了贊成票。 –

回答

3

在SQL服務器很容易..

我認爲最好的辦法是在表的末尾添加列,並創建一個列..

另一種選擇的期望順序的圖。 。

把所有的數據在一個臨時表,並重新創建正確的列順序實際的表,然後從臨時表

3

有沒有快捷方式腳本來完成這個插入的數據傳回實際的表,最好你可以自動化它下面的腳本基本上將您的新表格架構(將新列放在所需的位置)將舊的中的所有數據插入到新的中,刪除舊錶格,然後使用存儲過程將新表格重命名爲舊。

create table [NewTable] 
(
    [old_column_1] int 
    ,[new_column_1] varchar(max) -- new col at location 
    ,[old_column_2] int 
); 

insert into [NewTable] ([old_column_1], [old_column_2]) 
select [old_column_1], [old_column_2] from [OldTable] (nolock); 

drop table [OldTable]; 

sp_rename '[NewTable]', '[OldTable]'; 

正如其他人正確地指出,雖然,你列的位置使得任何對數據庫沒有什麼區別,但有一個人的慾望,以實現這一目標的各種個人原因,所以你有幾種選擇。您可以:

  1. 使用上述腳本來處理該過程。
  2. 允許將列附加到表的末尾並控制查詢中的順序。
  3. 基本上是對選項2的擴展,使用視圖來控制演示文稿中的順序。
  4. 在SQL Server Management Studio中使用GUI - 當將表格顯示爲網格時,可以將列拖放到所需的位置。
相關問題