怎样用sql语句复制表table1到表table2的同时复制主键
原文:怎样用sql语句复制表table1到表table2的同时复制主键
在从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
-
*/
怎样用sql语句复制表table1到表table2的同时复制主键的更多相关文章
- sql语句复制表
1.复制表结构及数据到新表CREATE TABLE 新表 SELECT * FROM 旧表 这种方法会将oldtable中所有的内容都拷贝过来,当然我们可以用delete from newtable; ...
- Oracle和sql server中复制表结构和表数据的sql语句
在Oracle和sql server中,如何从一个已知的旧表,来复制新生成一个新的表,如果要复制旧表结构和表数据,对应的sql语句该如何写呢?刚好阿堂这两天用到了,就顺便把它收集汇总一下,供朋友们参考 ...
- sql语句 怎么从一张表中查询数据插入到另一张表中?
sql语句 怎么从一张表中查询数据插入到另一张表中? ----原文地址:http://www.phpfans.net/ask/MTc0MTQ4Mw.html 比如我有两张表 table1 字段 un ...
- SQL语句分组排序,多表关联排序
SQL语句分组排序,多表关联排序总结几种常见的方法: 案例一: 在查询结果中按人数降序排列,若人数相同,则按课程号升序排列? 分析:单个表内的多个字段排序,一般可以直接用逗号分割实现. select ...
- sql语句,怎么查看一个表中的所有约束
sql语句,怎么查看一个表中的所有约束,比如,一个student表,有唯一,外键,主键,用sql语句怎么查看student表中的所有约束呢? select * from sysobjects wher ...
- SQL语句获取数据库中的表主键,自增列,所有列
SQL语句获取数据库中的表主键,自增列,所有列 获取表主键 1:SELECT TABLE_NAME,COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_U ...
- sql语句建表,并且自增加主键
sql语句建表,并且自增加主键 use [test] CREATE TABLE [dbo].[Table_4] ( [userid] [int] IDENTITY(1,1) NOT NULL, CON ...
- Sql Server 复制表
SELECT INTO 和 INSERT INTO SELECT 两种表复制语句 1.INSERT INTO SELECT语句 语句形式为:Insert into Table2(field1,fiel ...
- SQL语句汇总(一)——数据库与表的操作以及创建约束
首先,非常感谢大家对上篇博文的支持,真是让本菜受宠若惊,同时对拖了这么久才出了此篇表示抱歉. 前言:此文旨在汇总从建立数据库到联接查询等绝大部分SQL语句.SQL语句虽不能说很多,但稍有时间不写就容易 ...
随机推荐
- mac电脑如何快速显示桌面及切换应用
使用mac电脑时,我们习惯打开很多应用,文档等等.如果打开应用非常多,需要操作桌面,却不知如何快速返回桌面和切换应用时,操作就非常不便了,下面简单介绍mac电脑系统如何快速显示桌面及切换应用? 工具/ ...
- 项目中一次排序规则的改动,注意到js中map的遍历的顺序
背景:项目需要对前端页面上某个插件的下拉选择项进行排序,需要按照配置的顺序显示. 首先调查后台,发现sql语句中已经添加order by.之后发现查询结果遍历后封装进HashMap,这里改为LinkH ...
- Angular中的routerLink 跳转页面和默认路由
1.创建新项目 2.创建home news newscontent 组件 3.找到app-rounting-moudle.ts配置路由 1)引入组件 import { HomeComponent } ...
- 解压命令unzip常用方法汇总
解压命令unzip常用方法汇总: 1.把文件解压到当前目录下 1 unzip pythontab.com.zip 2.如果要把文件解压到指定的目录下,需要用到-d参数. 1 unzip -d ./tm ...
- 算法习题---4.3救济金发放(UVa133)
一:题目 (n< )个人站成一圈,逆时针编号为1~n.有两个官员,A从1开始逆时针数,B从n开始顺时针数.在每一轮中,官员A数k个就停下来,官员B数m个就停下来(注意有可能两个官员停在同一个人上 ...
- java@ 注解原理与使用
Java反射 java反射机制的定义: 在运行转态时(动态的)时. 对于任意一个类,都能够知道这个类的所有属性和方法 对于任意一个对象,都能够知道调用它的任意属性和方法 Class对象 java中用对 ...
- java大文件下载+断点续传
java两台服务器之间,大文件上传(续传),采用了Socket通信机制以及JavaIO流两个技术点,具体思路如下: 实现思路:1.服:利用ServerSocket搭建服务器,开启相应端口,进行长连接操 ...
- (一)java面试易忘题目精选(1)
1. int和Integer有什么区别? 答:Java是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入了基本数据类型,但是为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类 ...
- 腾讯ios内部视频,什么垃圾视频
前几天朋友在网上花钱买了个,腾讯ios内部视频,我也跟着下载了, 看着这列表,我感觉没什么东西,一看就是基础的东西,完全没有实战的内容,就像培训机构骗学生的东西啊,讲些毛理论,结果一到实战了,问个Sc ...
- 最新javascript自动按比例显示图片,按比例压缩图片显示
最新javascript自动按比例显示图片,按比例压缩图片显示 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//E ...
