博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
慎用SELECT INTO复制表
阅读量:5889 次
发布时间:2019-06-19

本文共 1800 字,大约阅读时间需要 6 分钟。

原文:

很多时候我们习惯于用SELECT
INTO复制一个表或表结构,因为它方便,快捷,而且在某些情况下效率比INSERT INTO 效率要高一些。但是要注意: SELECT INTO 复制表或表结构的时候,只是得到了一个“外壳”,就像克隆人一样,只是得到了一个躯体,个人的意识、回忆都不会克隆的。像原表的主键、外键、约束、触发器、索引都不会被复制过来。这点要注意哦,在某些情况下,没有注意的话,会照成“灾难后果的”,下面给个脚本例子,给大家演示下SELECT INTO复制表或表结构时,没有得到原表的主键、外键、约束....
img_405b18b4b6584ae338e0f6ecaf736533.gif准备数据
USE
 
[
MyAssistant
]
GO
SET
 ANSI_NULLS 
ON
GO
--
创建
IF
 
OBJECT_ID
(N
'
Groups
'
IS
 
NOT
 
NULL
    
BEGIN
        
PRINT
 
'
This table have been existed
'
;
        
DROP
 
TABLE
 Groups;
    
END
 
ELSE
    
BEGIN
        
CREATE
 
TABLE
 
[
dbo
]
.
[
Groups
]
        (
            
[
GroupID
]
        
SMALLINT
    
IDENTITY
(
1
1
),
            
[
GroupName
]
      
NVARCHAR
(
50
),
            
[
Description
]
    
NVARCHAR
(
100
),
            
CONSTRAINT
 
[
PK_Groups_GroupID
]
 
PRIMARY
 
KEY
(GroupID)
        )
    
END
GO
--
添加数据
INSERT
 
INTO
 dbo.Groups
VALUES
 (
'
SuperAdmin
'
'
超级管理员
'
);
INSERT
 
INTO
  dbo.Groups
VALUES
(
'
CusServGroup
'
'
客服部门组
'
);
INSERT
 
INTO
  dbo.Groups
VALUES
(
'
CommonGroup
'
'
普通部门组
'
);
GO
DROP
 
TABLE
 dbo.Users
CREATE
 
TABLE
 
[
dbo
]
.
[
Users
]
(
  
[
UserId
]
        
BIGINT
 
IDENTITY
(
1
1
NOT
 
NULL
 ,
  
[
UserName
]
      
NVARCHAR
(
25
NULL
 ,
  
[
PassWord
]
      
NVARCHAR
(
50
NULL
 ,
  
[
Sex
]
           
BIT
 
NULL
 ,
  
[
GroupID
]
       
SMALLINT
 ,    
  
CONSTRAINT
 
[
PK_Users_UserId
]
 
PRIMARY
 
KEY
 
CLUSTERED
 ( 
[
UserId
]
 
ASC
 ),
  
CONSTRAINT
 
[
FK_Users_Groups_GroupID
]
 
FOREIGN
 
KEY
(GroupID) 
REFERENCES
 Groups(GroupID)
)
GO
ALTER
 
TABLE
 
[
dbo
]
.
[
Users
]
 
ADD
 
CONSTRAINT
 
[
DF_Users_Sex
]
  
DEFAULT
 ((
0
)) 
FOR
 
[
Sex
]
GO
CREATE
 
TRIGGER
 TRG_Users 
ON
 dbo.Users
AFTER 
DELETE
AS
SET
 
IDENTITY_INSERT
 dbo.Users 
ON
;
INSERT
 
INTO
 UserHistory
(UserId, UserName, PassWord, Sex, GroupID)
SELECT
 
*
 
FROM
 deleted
GO
INSERT
  
INTO
 dbo.Users( UserName, PassWord, Sex, GroupID )
VALUES
  ( 
'
Kerry
'
'
312ddfjdf
'
,  
1
,    
1
          )
 
INSERT
  
INTO
 dbo.Users( UserName, PassWord, Sex, GroupID )
VALUES
  ( 
'
test
'
 
'
312ddfjdf
'
0
3
   )

 

 

我们用下面的语句复制下表Users,我们具体可以从下图中看到表User与TestUser结构的不同了

SELECT
 
*
 
INTO
 TestUser 
FROM
  dbo.Users

 

 

转载地址:http://bggix.baihongyu.com/

你可能感兴趣的文章
java struts2 debug
查看>>
简单够用的设计
查看>>
swift 广告轮播图
查看>>
marmalade android 5.0 JNI 调用失败的解决方案
查看>>
float 浮动详解
查看>>
【总结整理】面试需了解
查看>>
ArcEngine开发遇到的问题(转)
查看>>
js时间戳与日期格式的相互转换
查看>>
关于RF在实践WEB UI自动化测试时,碰到的问题
查看>>
解决Maven项目中jar包依赖冲突问题
查看>>
Pairing Heap模板
查看>>
cairo-1.14.6 static compiler msys mingw32
查看>>
Mac osx 下让android 模拟器横屏
查看>>
luogu P1387 最大正方形
查看>>
Android图片圆角效果
查看>>
WeChat Official Account Admin Platform API Introduction
查看>>
C语言写单链表的创建、释放、追加(即总是在最后的位置增加节点)
查看>>
poj1635
查看>>
C# LINQ详解(一)
查看>>
视频直播点播nginx-rtmp开发手册中文版
查看>>