如何关闭所有表的自增

木易随风 2012-07-05 02:10:56
如何关闭数据库中所有自增列的自增。

或如何解决下面的问题:

在存储过程中进行表间的数据迁移,表有自增列,需要将自增列的内容也插入过来。
实现:在存储过程中拼接字符串

SET IDENTITY_INSERT 表名ON INSERT INTO 表A(字段) SELECT 字段 FROM 表B SET IDENTITY_INSERT 表A OFF

问题:执行时仍提示表A的IDENTITY_INSERT是off状态。置为on应该是需要单独执行吧,貌似这样一起执行不起作业。
...全文
129 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Felixzhaowenzhong 2012-07-05
  • 打赏
  • 举报
回复

--在存储过程中动态拼接是可以实现的。必须写字段不能省否则会提示:
--“仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'tmp_tmp_A'中的标识列指定显式值。”
create procedure test
as
begin
declare @sql varchar(max)
set @sql='SET IDENTITY_INSERT tmp_tmp_A ON '+CHAR(10)+CHAR(13)+'INSERT INTO tmp_tmp_A ([ID],[C1]) SELECT [ID],[C1] FROM tmp_tmp' +CHAR(10)+CHAR(13)+'SET IDENTITY_INSERT tmp_tmp_A OFF '
EXEC (@SQL)
end
筱筱澄 2012-07-05
  • 打赏
  • 举报
回复
DECLARE @s VARCHAR(MAX)
SELECT @s= ISNULL(@s+CHAR(13),'')+'SET IDENTITY_INSERT '+name+' ON' FROM sys.tables
SELECT @s
木易随风 2012-07-05
  • 打赏
  • 举报
回复
知道了,连着写也没有问题,可以执行的,是我其它地方写错了。

谢谢楼上两位热心帮忙。
Rotel-刘志东 2012-07-05
  • 打赏
  • 举报
回复
除了自增列其他的列都可以,如何删除自增列有可能重复的值。
百年树人 2012-07-05
  • 打赏
  • 举报
回复
自增列你插入的时候只插入除了自增列的其他字段就可以了,否则自增列的值有可能有重复

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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