如何让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开发 使用)
...全文
958 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
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

22,302

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧