首页 新闻 搜索 专区 学院

代替自增长列的SQL语句怎么写哦

0
悬赏园豆:5 [已解决问题] 解决于 2012-07-03 16:41

insert into re(TD001,TD002)
select TD001,TD002
from COPTD  
但是re有一个自增长列ID列 , 因为有一个父子的表的问题,必须要去掉ID列自增长特性,但ID还是主键, 所以每次insert into的时候, ID的结果还是跟自增长列相同,这个SQL语句怎么写呢

顶多是用 select identity(int,1,1) as record_id,* into #t from xxx  
但是前提条件是ID列没有数据,但是我这个数据在不断的增长,该怎么写呢

zhengyingcan的主页 zhengyingcan | 初学一级 | 园豆:12
提问于:2012-04-23 20:02
< >
分享
最佳答案
0

set identity_insert re on

--不必要去掉ID列自增长特性

insert into re(ID,TD001,TD002)
select ID,TD001,TD002
from COPTD 


set identity_insert re off

收获园豆:2
小材小用 | 小虾三级 |园豆:639 | 2012-04-24 08:20

这样子都行呀,大师的意思是用的时候开启,不用的时候关闭,牛呀,

zhengyingcan | 园豆:12 (初学一级) | 2012-04-24 08:53

这样极易导致死锁,而且也无法保证ID不重复。

邀月 | 园豆:25475 (高人七级) | 2012-04-25 11:25

我觉得还是你表设计的问题。

小材小用 | 园豆:639 (小虾三级) | 2012-04-25 12:06
其他回答(3)
0

有点糊涂,如果表中有自增长列的话,在插入的是时不用添加

如tb(numeric,cell1,cell2)

insert into tb(cell1,cell2) value(number1,number2)

numeric是自增长列

收获园豆:1
foliagelx | 园豆:210 (菜鸟二级) | 2012-04-23 22:46
0

可以用 NEWID() 来处成 GUID,这样不会重复

如下:

insert into re(ID,TD001,TD002)
select NEWID(),TD001,TD002
from COPTD  
收获园豆:1
韩天伟 | 园豆:697 (小虾三级) | 2012-04-25 12:33
0

需求表述不明确, 哪两表是父子关系? 建议把相关表的CreateTable语句发出来, 然后再帮你分析

收获园豆:1
Chao Hong | 园豆:244 (菜鸟二级) | 2012-04-25 17:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册