如何让sqlserver的自增字段用sql语句打开加1或者关闭

lilinew 2011-01-26 08:55:08
sqlserver2008

如何让sqlserver的自增字段用sql语句打开加1或者关闭

(我用了 alter table a alter column ID int identity(1,1) Msg 156, Level 15, State 1, Line 3
关键字 'identity' 附近有语法错误。失败
: SET IDENTITY_INSERT dbo.a OFF 失败的

最后
[20:42:41] bruce says: Alter table table1 alter column column1 Identity(1,1);

Alter table table1 ADD CONSTRAINT column1_def Identity(1,1) FOR column1

they all can not work,也失败)

这些id来自原始数据源,他的id并不是连续的。 所以无法加一个字增字段复制来解决。

问题如何让sqlserver的自增字段用sql语句打开加1或者关闭
(我用etl把数据导过来 之后必须用pk 自增的id来让.net开发 使用)
...全文
609 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
lilinew 2011-01-27
遇新问题 SET IDENTITY_INSERT aa ON
update aa set id=10 where id=1;
SET IDENTITY_INSERT aa OFF

Msg 8102, Level 16, State 1, Line 3
Cannot update identity column 'id'.

插入解决 ,更新这个id 如何做>?
回复
lilinew 2011-01-27
感谢通过
SET IDENTITY_INSERT aa ON
insert aa(a,id) values(2,3);
SET IDENTITY_INSERT aa OFF
回复
feixianxxx 2011-01-27

SET IDENTITY_INSERT tbname ON
insert 操作...
SET IDENTITY_INSERT tbname OFF


这个失败的?
那就是你insert的语句问题
回复
lilinew 2011-01-27
先不考虑 update

我用了2008 ssis工具 如何在这个工具里实现先 SET IDENTITY_INSERT aa ON
把数据导完后(这个使用数据流 )
再 启用 SET IDENTITY_INSERT aa OFF

SET IDENTITY_INSERT aa ON

SET IDENTITY_INSERT aa OFF 这2个如何用ssis的什么项目来实现 (我用了‘Execute SQL task’死活通不过)。 关键这3步必须放到一个session里 。 不知道如何用ssis来实现
回复
Shawn 2011-01-26
create table temp
(
id int identity,
[name] varchar(100)
)

insert temp
select 'a' union all
select 'b'

--#1. 备份表
--#2. 把数据全部写到临时表
select [newid] = id + 1, [name] into #temp from temp
--#3. 清空原表
truncate table temp
--#4. 设置允许插入id
SET IDENTITY_INSERT temp ON
--#5. 插入数据
insert into temp(id, [name])
select * from #temp
--36. 设置不允许插入id
SET IDENTITY_INSERT temp OFF

--结果
select * from temp
回复
lilinew 2011-01-26
这个是失败的
--设置允许显式插入自增列
SET IDENTITY_INSERT tablename ON
--当然插入完毕记得要设置不允许显式插入自增列
SET IDENTITY_INSERT tablename OFF

删除重建一--------------不可能的
因为原有的不连续的id 的植是一定要保留.否则重建会丢失那些很重要的id 值
回复
叶子 2011-01-26
删除重建一个就ok了。
回复
Shawn 2011-01-26
--设置允许显式插入自增列
SET IDENTITY_INSERT tablename ON
--当然插入完毕记得要设置不允许显式插入自增列
SET IDENTITY_INSERT tablename OFF
回复
王向飞 2011-01-26
alter table tb
drop column id
go

alter table tb
add id int identity(1,1)

select * from tb
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2011-01-26 08:55
社区公告
暂无公告