Sql-Server

如何創建具有相同約束和索引的新表?

  • May 6, 2019

我正在創建一個具有主鍵約束和該表中的非聚集索引的新表。

我知道,我想創建另一個具有相同結構和值以及鍵和索引的表。

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 會扔給你的東西)。

所有這些都可以在 SQL Server Management Studio 中完成。

Script Table As選項為主鍵和外鍵以及約束生成創建程式碼。它不會為索引創建腳本,因此您必須在另一個步驟中執行此操作。類型,我建議在 SSMS 對象資源管理器中展開所有對像類型節點。

在此處輸入圖像描述

為表結構、主鍵和外鍵以及約束創建腳本

  1. 執行SQL Server 管理工作室
  2. 對象資源管理器中,展開數據庫
  3. 展開表格
  4. 右鍵點擊表並選擇腳本表為 | 創建到 | 新的查詢編輯器視窗

在此處輸入圖像描述

生成的腳本將顯示在查詢編輯器選項卡中。確保更改表、主鍵和外鍵以及約束名稱,因為這些名稱必須是唯一的。

否則,您將收到一條錯誤消息,顯示類似*“數據庫中已經有一個名為“地址”的對象。”* , 或*‘操作失敗,因為表 ‘Person.Address’ 上已存在名稱為 ‘AK_Address_rowguid’ 的索引或統計資訊。’*

為索引創建腳本

使用與上述類似的步驟:

在此處輸入圖像描述

為數據創建 INSERT INTO 腳本

  1. 右鍵點擊數據庫(不是表!)
  2. 打開任務 | 生成腳本
  3. 選擇對象選項卡上,選擇要編寫腳本的表

在此處輸入圖像描述

4.在Set Scripting Option 選項卡中,點擊Advanced並確保Types of data to script選項設置為Data only

注意:如果您選擇架構和數據,生成的架構腳本將與此答案中第一種方法中生成的腳本相同。

在此處輸入圖像描述

5.在執行腳本之前將表名更新為新表名

引用自:https://dba.stackexchange.com/questions/65734