如何创建具有相同约束和索引的新表?


8

我正在创建一个具有主键约束和该表中的非聚集索引的新表。

我知道,我想创建另一个具有相同结构和值以及键和索引的表。

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

Answers:


14

SELECT INTO不会为您执行此操作,因为它在维护列名和数据类型的同时,并没有保留表的许多其他方面,例如约束,索引等。如果其中一列具有IDENTITY属性,则保持在列之外的是IDENTITY属性。

在对象资源管理器中右键单击原始表,然后选择“脚本表为”>“创建到”>“新建查询窗口”。您应该对原始表具有一个CREATE TABLE脚本,包括所有约束等。请注意,您可能必须将其中一些设置(“工具”>“选项”>“ SQL Server对象资源管理器”>“脚本”)设置为true,才能获得所有所需的表属性,因此这可能需要反复试验:

工具>选项> SQL Server对象资源管理器>脚本下的选项

现在,只需手动修改该脚本以指定新的表名,并确保将所有约束和索引名调整为唯一即可(此工作量将取决于您是否已建立命名约定或(如果您只是接受SQL Server会给您的东西)。


5

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

脚本表作为选项生成创建用于初级和外键和约束的代码。它不会为索引创建脚本,因此您必须在另一步骤中执行此操作。类型,我建议在SSMS Object Explorer中扩展所有对象类型节点。

在此处输入图片说明

为表结构,主键和外键以及约束创建脚本

  1. 运行SQL Server Management Studio
  2. 对象资源管理器中,展开“ 数据库”
  3. 展开表格
  4. 右键单击该表,然后选择“ 脚本表”为| 创建| 新查询编辑器窗口

在此处输入图片说明

生成的脚本将显示在“查询编辑器”选项卡中。确保更改表,主键和外键以及约束名称,因为这些名称必须唯一。

否则,您将收到一条错误消息,提示类似“数据库中已经有一个名为“地址”的对象”。,或“操作失败,因为在表'Person.Address'上已经存在名称为'AK_Address_rowguid'的索引或统计信息。”

为索引创建脚本

使用与上述类似的步骤:

在此处输入图片说明

为数据创建INSERT INTO脚本

  1. 用鼠标右键单击数据库(不是表!)
  2. 打开任务| 生成脚本
  3. 在“ 选择对象”选项卡上,选择要编写脚本的表

在此处输入图片说明

4.在“ 设置脚本选项”选项卡中,单击“ 高级”,并确保“ 脚本数据类型”选项设置为“ 仅数据”

注意:如果选择“ 架构和数据”,则生成的架构脚本将与此答案中第一种方法生成的脚本相同。

在此处输入图片说明

5,在执行脚本之前将表名更新为新表的名称


1

FOR模式 -表,约束和键

  • 在对象资源管理器中,选择表(例如ABC)>右键单击它
  • 然后选择Script table as> CREATE TO> New Query Editor Window
  • 将打开用于ABC的表创建脚本
  • 变更表名称
  • 变更PK
  • 更改约束名称
  • 变更索引名称
  • 现在执行此脚本,将使用相同的结构但使用不同的名称来创建表格...

FOR索引

  • 选择表ABC>展开它
  • 选择索引>右键单击非聚集索引
  • 脚本索引AS>创建到>新建查询编辑器窗口
  • 变更索引名称
  • 在新创建的表上执行以在其上创建INDEX。

数据

  • 选择数据库名称
  • 右键点击它
  • 选择任务>生成脚本...
  • 一个新的窗口将会打开
  • 选择下一步
  • 现在选择“特定数据库对象”,然后选择“表ABC”
  • 选择下一步
  • 提前进入>
  • 键入数据以仅将数据编写为脚本
  • 然后确定>下一步>下一步>完成...。
  • 现在在新创建的表中执行此脚本
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.