原文:慎用SELECT INTO复制表

很多时候我们习惯于用SELECT INTO复制一个表或表结构,因为它方便,快捷,而且在某些情况下效率比INSERT INTO 效率要高一些。但是要注意: SELECT INTO 复制表或表结构的时候,只是得到了一个“外壳”,就像克隆人一样,只是得到了一个躯体,个人的意识、回忆都不会克隆的。像原表的主键、外键、约束、触发器、索引都不会被复制过来。这点要注意哦,在某些情况下,没有注意的话,会照成“灾难后果的”,下面给个脚本例子,给大家演示下SELECT INTO复制表或表结构时,没有得到原表的主键、外键、约束....
准备数据
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

慎用SELECT INTO复制表的更多相关文章

  1. MSSQLSERVER数据库- 慎用SELECT INTO复制表

    很多时候我们习惯于用SELECT INTO复制一个表或表结构,因为它方便,快捷,而且在某些情况下效率比INSERT INTO 效率要高一些.但是要注意: SELECT INTO 复制表或表结构的时候, ...

  2. 尽量不要用select into 复制表

    select into 复制表会带来灾难后果,因为只是复制了一个外壳,就像克隆人,有躯体没意识,像原表的主键 外键 约束 触发器 索引都不会被复制过来, 创建一个表:CREATE TABLE [dbo ...

  3. MySQL 复制表

    MySQL 复制表 如果我们需要完全的复制MySQL的数据表,包括表的结构,索引,默认值等. 如果仅仅使用CREATE TABLE ... SELECT 命令,是无法实现的. 本文将为大家介绍如何完整 ...

  4. Oracle如何复制表的sql语句

    以下的文章主要是介绍Oracle复制表的sql语句,其中包括如何复制表结构的sql.以及如何复制相关表的结构又复制表中的数据sql.以下就是相关内容的具体介绍,望你浏览完以下的内容会有所收获. 如下, ...

  5. 吴裕雄 26-MySQL 复制表

    如果我们需要完全的复制MySQL的数据表,包括表的结构,索引,默认值等. 如果仅仅使用CREATE TABLE ... SELECT 命令,是无法实现的.本章节将为大家介绍如何完整的复制MySQL数据 ...

  6. mysql-10临时表、复制表

    1.创建临时表 mysql临时表在我们需要保存一些临时数据时非常有用. 临时表只在当前连接可见,当关闭连接时,mysql会自动删除表并释放所有空间. 如果使用客户端创建临时表,只有在管不客户端程序时才 ...

  7. 【MYSQL笔记2】复制表,在已有表的基础上设置主键,insert和replace

    之前我自己建立好了一个数据库xscj:表xs是已经定义好的 具体的定义数据类型如下: 为了复制表xs,我们新建一个表名为xstext,使用下列语句进行复制xs,或者说是备份都可以: create ta ...

  8. 二十七、MySQL 复制表

    MySQL 复制表 如果我们需要完全的复制MySQL的数据表,包括表的结构,索引,默认值等. 如果仅仅使用CREATE TABLE ... SELECT 命令,是无法实现的. 本章节将为大家介绍如何完 ...

  9. MySQL数据库之-foreign key 外键(一对多、多对多、一对一)、修改表、复制表

    摘要: 外键 一对多 外键 多对多 外键 一对一 --------------------------------------------------------------------------- ...

随机推荐

  1. 锚点自适应 map area coords

    最近做MOBILE的HTML5开发,人体图和页面一样,需要自适应不同的手机屏幕,蛋疼的是coords里面的标记是固定的,图片自适应后,锚点的标记就会产生空白区域,看了下https://github.c ...

  2. vue cli 3 & webpack-merge & webpack 3 & bug

    vue cli 3 & webpack-merge & webpack & bug bug webpack-merge & bug webpack-merge ??? ...

  3. hdu 1007 Quoit Design (最近点对问题)

    Quoit Design Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  4. [codeforces934E]A Colourful Prospect

    [codeforces934E]A Colourful Prospect 试题描述 Firecrackers scare Nian the monster, but they're wayyyyy t ...

  5. 洛谷 P3349 [ZJOI2016]小星星 解题报告

    P3349 [ZJOI2016]小星星 题目描述 小\(Y\)是一个心灵手巧的女孩子,她喜欢手工制作一些小饰品.她有\(n\)颗小星星,用\(m\)条彩色的细线串了起来,每条细线连着两颗小星星. 有一 ...

  6. JavaScript jQuery 中定义数组与操作及jquery数组操作 http://www.jb51.net/article/76601.htm

    首先给大家介绍javascript jquery中定义数组与操作的相关知识,具体内容如下所示: 1.认识数组 数组就是某类数据的集合,数据类型可以是整型.字符串.甚至是对象Javascript不支持多 ...

  7. SICAU-OJ: 数字游戏

    数字游戏 题意:给出一个长度为n的数字,然后抹去k个数,使得剩下的数最大. 题解: 贪心的思想:让答案串中每一位尽可能大. 我们肯定要用完这k次的,假设有一个答案字符串ans,我们现在遍历给出的串,假 ...

  8. 模拟Windows系统“回收站”

    HTML: <!DOCTYPE html><html> <head> <meta http-equiv="content-type" co ...

  9. angular控制器controller里获取不到ng-model的值,获取为undefined

    所遇问题: html:ng-model=“test”, 但是在controller里打印的$scope属性里面并未发现test,控制台打印test为undefined,页面上{{test}}却可以正常 ...

  10. Topcoder SRM 604 div1题解

    CTSC考完跑了过来日常TC--- Easy(250pts): 题目大意:有个机器人,一开始的位置在(0,0),第k个回合可以向四个方向移动3^k的距离(不能不动),问是否可以到达(x,y),数据满足 ...