SQL 中有两个表:表1、表2,结构一样,但都含有自增列(identity),请问这两个表之间数据如何复制?
我用如下SQL制数据时,INSERT INTO 表1 SELECT * FROM 表2
出现了错误,错误如下:
消息 8101,级别 16,状态 1,第 1 行
仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'CustomFormColumnRule'中的标识列指定显式值。没办法,我只能将两个表的自增列改为:不自增,才能这样实现数据复制。复制完后再改为自增列。
请问各位朋友,有没有更好的方法?
我用如下SQL制数据时,INSERT INTO 表1 SELECT * FROM 表2
出现了错误,错误如下:
消息 8101,级别 16,状态 1,第 1 行
仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'CustomFormColumnRule'中的标识列指定显式值。没办法,我只能将两个表的自增列改为:不自增,才能这样实现数据复制。复制完后再改为自增列。
请问各位朋友,有没有更好的方法?
解决方案 »
- |zyciis| 如何取出一条记录的ID号,同时更新他的操作状态Sel 而且在并发的时候不会出错重复读取 谢谢 第二贴
- 继续上一个问题,增加了条件,想了很久,还是没解决?
- select 语句中用 distinct问题?急!!!!
- 类型转换
- 求sql语句
- SELECT语句请教
- 连接虚拟主机的2005出错,提示:已成功与服务器建立连接,但是在登录过程中发生错误。 (provider: TCP 提供程序, error: 0 - 指定的网络
- 不能连接局域网的SQL服务器?
- 简单问题,,,保结贴!!
- 关于sqlserver的外键
- 一对多关连查询
- 请教如何在SQL SERVER里面存储List<double>型的数据
双向复制 lz也需要取消自增,因为二者会有重复的ID综上,需要取消其中一个的ID自增属性。
就可以插入identity类型的值了,但是不要让这个id 重复了,因为如果一个id设置成identity类型的话,它就是这个表的主键,希望下面的例子对你有帮助
IF OBJECT_ID('tb1') IS NOT NULL
DROP TABLE tb1
GOCREATE TABLE tb1 (
id INT IDENTITY(1,1),
col VARCHAR(max)
)INSERT INTO tb1
SELECT 'a' UNION ALL
SELECT 'a' UNION ALL
SELECT 'a' UNION ALL
SELECT 'a' UNION ALL
SELECT 'a' UNION ALL
SELECT 'a' UNION ALL
SELECT 'a' UNION ALL
SELECT 'a' UNION ALL
SELECT 'a' UNION ALL
SELECT 'a' UNION ALL
SELECT 'a' UNION ALL
SELECT 'a'GOIF OBJECT_ID('tb2') IS NOT NULL
DROP TABLE tb2
GOCREATE TABLE tb2 (
id INT IDENTITY(1,1),
col VARCHAR(max)
)INSERT INTO tb2
SELECT 'b' UNION ALL
SELECT 'b' UNION ALL
SELECT 'b' UNION ALL
SELECT 'b' UNION ALL
SELECT 'b' UNION ALL
SELECT 'b' UNION ALL
SELECT 'b' UNION ALL
SELECT 'b' UNION ALL
SELECT 'b' UNION ALL
SELECT 'b' UNION ALL
SELECT 'b' UNION ALL
SELECT 'b' GOSET IDENTITY_INSERT tb1 ON
GOINSERT INTO tb1(id,col)
SELECT id+30,col FROM tb2
GOSET IDENTITY_INSERT tb1 OFF
GOSELECT * FROM tb1GOIF OBJECT_ID('tb1') IS NOT NULL
DROP TABLE tb1
GOIF OBJECT_ID('tb2') IS NOT NULL
DROP TABLE tb2
GO
select * from table2这样写就要求表table1中的列数和table2表中的列数一样。应该不会是写成了
insert into table1(*)...
这样的形式吧?
列数当然是一样啊,写的也是
insert into table1
select * from table2
但如果table2有自增列的话,就复制不进去啊
原因是你的IDTIFITY 是自增,每个表中如果有自增的话是有计数的,如果导入的表中也有自增他也有自己的计数,举个例子表1 id 到了50 表2 ID到了 90 如果你把表1 插入到表2 表2应该下个ID 是91 但你插入的却是 51所以报错