如何創建具有相同約束和索引的新表?
我正在創建一個具有主鍵約束和該表中的非聚集索引的新表。
我知道,我想創建另一個具有相同結構和值以及鍵和索引的表。
create table Dummy (id integer ,name varchar(20),salary integer Constraint PK_Con_id primary key(id)) insert into Dummy values(11,'AAA',1000); insert into Dummy values(12,'BBB',2000); insert into Dummy values(13,'CCC',3000); insert into Dummy values(14,'DDD',4000); select * from Dummy; create nonclustered index IX_Name on Dummy(Name)
現在我正在創建
Dmy
表,但鍵和約束沒有反映Dmy
在 SQL Server 2008 R2 的表中。SELECT * INTO Dmy FROM Dummy
SELECT INTO 不會為您執行此操作,因為雖然它維護列名和數據類型,但它並沒有保留表的許多其他方面,例如約束、索引等。它唯一真正的如果其中一列具有 IDENTITY 屬性,則保留在列之外。
右鍵點擊對象資源管理器中的原始表,然後選擇將表編寫為 > 創建到 > 新查詢視窗。您應該為原始表創建一個 CREATE TABLE 腳本,包括所有約束等。請注意,您可能必須將其中一些設置(工具 > 選項 > SQL Server 對象資源管理器 > 腳本)設置為 true 以獲取所有你想要的表屬性,所以這可能需要一些試驗和錯誤:
現在,只需手動修改該腳本以指定新表名稱,並確保調整所有約束和索引名稱,以使它們是唯一的(這將取決於您是否有既定的命名約定或如果你只是接受 SQL Server 會扔給你的東西)。
所有這些都可以在 SQL Server Management Studio 中完成。
Script Table As選項為主鍵和外鍵以及約束生成創建程式碼。它不會為索引創建腳本,因此您必須在另一個步驟中執行此操作。類型,我建議在 SSMS 對象資源管理器中展開所有對像類型節點。
為表結構、主鍵和外鍵以及約束創建腳本
- 執行SQL Server 管理工作室
- 在對象資源管理器中,展開數據庫
- 展開表格
- 右鍵點擊表並選擇腳本表為 | 創建到 | 新的查詢編輯器視窗
生成的腳本將顯示在查詢編輯器選項卡中。確保更改表、主鍵和外鍵以及約束名稱,因為這些名稱必須是唯一的。
否則,您將收到一條錯誤消息,顯示類似*“數據庫中已經有一個名為“地址”的對象。”* , 或*‘操作失敗,因為表 ‘Person.Address’ 上已存在名稱為 ‘AK_Address_rowguid’ 的索引或統計資訊。’*
為索引創建腳本
使用與上述類似的步驟:
為數據創建 INSERT INTO 腳本
- 右鍵點擊數據庫(不是表!)
- 打開任務 | 生成腳本
- 在選擇對象選項卡上,選擇要編寫腳本的表
4.在Set Scripting Option 選項卡中,點擊Advanced並確保Types of data to script選項設置為Data only
注意:如果您選擇架構和數據,生成的架構腳本將與此答案中第一種方法中生成的腳本相同。
5.在執行腳本之前將表名更新為新表名