2009-03-05 98 views
9

我正在使用SQL Server(我是一個SQL Server noob)並試圖更改一個表。我想要CREATE TABLE LIKE安全地存儲數據同時我滴鍵和約束,所有的SQL Server似乎需要改變原表的時候,但我一直沒能找到一個匹配該命令的其它rigamorole ...什麼是'CREATE TABLE ... LIKE ...'在SQL Server中的等效內容

+0

我使用Visual Studio的SQL Server瀏覽器爲了這個目的,它允許數據庫結構的自動更新。 – Ginden 2015-01-12 09:15:45

回答

14

你可以做

SELECT * INTO #MyTable_tmp FROM MyTable

然後修改您的MyTable,並將您的數據複製回來。其他我見過的方法是創建一個新表,將其稱爲Mytable_Tmp(不是臨時表),它將成爲您的新表。

然後複製您的數據,進行所需的任何遷移。然後,您將放棄原始表並在Mytable上進行重命名。

或者你可以得到許多比較數據庫並生成差異腳本或VSTS數據庫版本(附帶開發者)的excellant工具之一,並且你可以執行從項目文件到數據庫的diff腳本。

編輯

當您從MyTable的運行SELECT * INTO #MyTable,SQL Server創建名爲#MyTable一個新的臨時表,從你的SELECT子句每一列和數據類型相匹配。在這種情況下,我們選擇*,以便與MyTable匹配。這隻會創建不復制默認值,約束索引或其他任何列的列。

+0

我的問題不是如何將數據放入已存在的臨時表中。我更關心的是創建一個與現有表匹配的臨時表。我有幾十個需要修改的表,我不想手動創建臨時表。 – Ichorus 2009-03-05 19:58:30

+0

啊!很好!謝謝! – Ichorus 2009-03-05 20:14:53

17

你想重新創建相同的結構?

這個怎麼樣

SELECT * 
into test 
FROM myRealTable 
where 0=1 

沒有數據將被插入到新表

相關問題