我想用腳本來改變SQL Server中的表。在過去,我總是通過GUI來完成這種事情,但現在我需要生成一個腳本來爲客戶做。使用腳本在SQL Server中的其他列之間插入列
我有一個SQL Server數據庫表是這樣的:
MyTable ------- ColA int NOT NULL ColB int NOT NULL ColC int NOT NULL ColD VARCHAR(100)
主鍵跨可樂,COLB和COLC定義。
我想要的SQL腳本來更改表所示:
MyTable ------- ColA int NOT NULL ColB int NOT NULL ColX int NOT NULL (new column, default 0 for existing data) ColC int NOT NULL ColD VARCHAR(100)
主鍵將目前由可樂,COLB,COLX和COLC定義。
這很容易通過SQL Server GUI來完成。但是當我從它那裏生成一個腳本時,它似乎不必要的複雜。基本上,腳本使用新模式創建臨時表,將舊錶中的所有數據,索引和約束複製到臨時表中,刪除舊錶,然後將新表重命名爲舊錶。此外,它有這樣的臺詞:
ALTER TABLE dbo.Tmp_MyTable ADD CONSTRAINT
MyTable21792984_ColC_DF DEFAULT ((0)) FOR ColC
我擔心的是,這些隨機找數有(即21792984)將不會對所有的客戶數據庫實例相同。它們看起來像是SQL Server在創建數據庫時生成的,每個實例都是唯一的。
是否有更簡單的通過SQL命令更改表的方法?我看過網上,但我發現大多是基本的和/或通用的。
更新:從我收到的答案,它看起來像困難在於把新列「之間」兩欄。我意識到,列的順序並不重要(如果我錯了,可以隨時留下一個答案來糾正我)。在我的情況下,如果我只是將列添加到表的末尾,則更改更簡單,代碼中的任何內容都不依賴於特定的列順序。
謝謝,經過進一步檢查,列順序並不重要(美學除外)。只有將列添加到最後才能使其變得更容易。 – Kip 2009-06-08 17:18:40
如果您確實希望更改訂單,則可以使用SQL Compare中的強制列順序來執行此操作。這需要完整的表格重建,所以如果您有大量數據可能需要時間。現有數據將由SQL Compare保存。 – 2010-06-12 10:32:25