在从table1表复制到table2的时候,我们会用语句:

select * into table2 from table1

但这个语句并不能在复制数据的同时,复制主键。

下面的代码通过动态语句,来实现在复制数据的同时,也会复制主键:

if OBJECT_ID('table1') is not null    drop table table1 go  create table table1 ( id  int  , idd int, vvv varchar(100), primary key (id,idd)  --为了实验在主键有多个字段的情况,所有主键这里有2个字段 )  insert into table1 select 1,1,'a' union all select 1,2,'b' union all select 2,1,'a'  go   declare @old_table_name varchar(30) declare @new_table_name varchar(30) declare @is_clustered varchar(10) declare @sql varchar(1000)  set @old_table_name = 'table1'; set @new_table_name = 'table2'; set @is_clustered = ''; set @sql = '';  select @is_clustered = i.type_desc,         @sql = @sql + ',' + c.name +               case when ic.is_descending_key = 0                         then ' asc'                    else ' desc'               end                from sys.tables t inner join sys.indexes i         on t.object_id = i.object_id inner join sys.index_columns ic         on i.object_id = ic.object_id            and i.index_id = ic.index_id inner join sys.columns c         on c.column_id = ic.column_id            and c.object_id = ic.object_id where i.is_primary_key = 1       and t.name = @old_table_name order by key_ordinal    select @sql = 'if object_id(''' + @new_table_name + ''') is not null' +               ' drop table ' + @new_table_name +';' +               'select * into ' + @new_table_name +                ' from ' + @old_table_name + ';' +                              'alter table ' + @new_table_name +               ' add primary key ' + @is_clustered +                '(' + stuff(@sql,1,1,'') + ')'  select @sql   /* if object_id('table2') is not null     drop table table2;  select * into table2 from table1;  alter table table2 add primary key CLUSTERED(id asc,idd asc) */                exec(@sql)  select * from table2 /* id idd vvv 1   1   a 1 2   b 2 1   a */

转载于:https://blog.51cto.com/yupeigu/1367973

怎样用sql语句复制表table1到表table2的同时复制主键相关推荐

  1. SQLServer:GUI方式、SQL语句两种方式建立视图和GUI方式设置主键、约束等

    SQLServer:GUI方式.SQL语句两种方式建立视图和GUI方式设置主键.约束等 目录 题目要求 解题流程 (1).建立视图 (2)GUI方式设置主键.约束等 ​ 题目要求 基于表DEPT01和 ...

  2. Bootstrap4+MySQL前后端综合实训-Day08-AM【多表查询sql语句、关联数据的假删除、自动增长主键的获取、栏目管理“数据编辑”按钮的实现】

    [Bootstrap4前端框架+MySQL数据库]前后端综合实训[10天课程 博客汇总表 详细笔记][附:实训所有代码] 目   录 多表查询sql语句 关联数据的假删除(status状态码/数据可恢 ...

  3. Oracle和sql server中复制表结构和表数据的sql语句

    在Oracle和sql server中,如何从一个已知的旧表,来复制新生成一个新的表,如果要复制旧表结构和表数据,对应的sql语句该如何写呢?刚好阿堂这两天用到了,就顺便把它收集汇总一下,供朋友们参考 ...

  4. mysql更新两表所有记录语句怎么写_mysql 一条sql语句update更新两个表

    mysql 一条sql语句update更新两个表 你写过一条sql语句来修改两个表的数据吗? UPDATE test.table1 t1,test.table2 t2 SET t1.aa='a',t1 ...

  5. 合肥工业大学—SQL Server数据库实验三:SQL语句创建和删除基本表

    SQL语句创建和删除基本表 1. 编写6个基本表 2. 修改基本表结构,完整性约束条件 3. 用Drop table 语句删除基本表 1. 编写6个基本表 设有简单教学管理的6个关系模式如下: 系(系 ...

  6. SQL语句遍历树结构的数据表

    [转自]:肆尾葱的博客<SQL语句遍历树结构的数据表> 一.创建树结构的数据库表 -- 数据库为 SQL Server create table treeTest(id int,paren ...

  7. Oracle数据库查看表空间sql语句、查看Oracle数据库表空间剩余 、修改表空间、库备份

    一  Oracle数据库查看表空间sql语句 1.oracle查看表空间当前用户 SQL>  select  username,default_tablespace  from user_use ...

  8. mysql 用一条sql语句修改两个表里的内容,一条sql语句update更新两个表

    在mysql里试过,其他数据库里没试过 table1的u_id和table2的u_id是主外键关系 Sql代码 UPDATE zl.table1 t1,zl.table2 t2 SET t1.aa=' ...

  9. sql语句,怎么查看一个表中的所有约束

    sql语句,怎么查看一个表中的所有约束,比如,一个student表,有唯一,外键,主键,用sql语句怎么查看student表中的所有约束呢? select * from sysobjects wher ...

  10. 使用SQL语句创建并管理数据表

    数据库创建以后,我们需要创建数据表存储数据,表是一种重要的数据库对象.简单的叙述一下表的概念. 表的概念: 数据表是数据库中一个重要的对象,也是其他对象的基础.一个数据库中可以包含多张表,表是数据的集 ...

最新文章

  1. 吃亏是福--创业[3]
  2. String常用方法总结
  3. uva 558 Wormholes
  4. Python——七段数码管绘制
  5. python +Django 搭建web开发环境初步,显示当前时间
  6. python是强定义语言吗_python是强类型语言吗
  7. windows安装python2.7_Windows下安装python2.7及科学计算套装
  8. echarts grid的样式位置_CSS Grid 系列(下)-使用Grid布局构建网站首页
  9. R语言--自定义函数证明中心极限定理
  10. 关于opacity、visibility、display属性的一道CSS面试题
  11. ps 条件动作添加 图层锁定和解锁
  12. 砸蛋程序php,砸金蛋:jQuery+PHP实现的砸金蛋中奖程序
  13. 电脑开机提示计算机无法启动不了,图文详解电脑开机无法进入系统怎么办
  14. 高级程序员解决问题的思维模式和普通程序员的区别在哪里?
  15. 优雅的剥洋葱:浅析 Java Optional 类
  16. 在excel中如何筛选重复数据_Excel如何快速筛选
  17. vsc 好用的插件
  18. [数学理论]最大熵模型
  19. 岁月的剪影【你是人间四月天】
  20. httpposterror_java-使用HttpClient模拟HTTP POST时出现问题

热门文章

  1. freopen()函数文件流重定向和文件流的清除
  2. php 放大镜代码,jQuery实现放大镜效果实例代码_jquery
  3. win10如何设置任务栏在左侧显示
  4. Android报错:java.lang.ClassCastException: com.github.mikephil.charting.charts.PieChart cannot be cast
  5. Android Studio中R无法找到res/raw文件夹
  6. 编译器各个步骤的介绍
  7. python之路--day?--初始面向对象
  8. 将windows项目移植到linux上
  9. 自己的包增加为第三方包,使用Eclipse环境报Unresolved import错误(pycharm可用正常引用)...
  10. 构建自己的PHP框架--实现Model类(2)