日期:2014-05-17  浏览次数:20564 次

存储过程出错,急起直追求解决 方案
if exists (select * from sysobjects where name='LeaveInfoHistory')
insert into LeaveInfoHistory select * from LeaveInfo where oldid=@oldid
else 
select * into LeaveInfoHistory from LeaveInfo where oldid=@oldid
delete from LeaveInfo where oldid=@oldid

消息 8101,级别 16,状态 1,过程 usp_leaveDel,第 5 行
仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'LeaveInfoHistory'中的标识列指定显式值。
以上存储过程出错了,可是我设了那个属性也不对,所以我想取消leaveinfohistory表中的自动标识列,可是搜不着,所以我导历史记录表的操作就不能执行。急求解决方案

------解决方案--------------------
 LeaveInfoHistory 里面 有自增字段吧
------解决方案--------------------
LeaveInfoHistory 里面 有自增字段
------解决方案--------------------
不要用select * ,写上要插入的字段,不包括自增字段
------解决方案--------------------
select * 改为select col1,col2,……
------解决方案--------------------
LeaveInfoHistory 表里的ID有自增字段,插入时不能往这字段写数据,所以不要用 select * from 里面的*号,而要把具体要写入LeaveInfoHistory表的字段写出来
如6楼所说
------解决方案--------------------
引用:
我们有十几个表,都要写字段名,不是太麻烦了吗?我想取消表的自动增长,导历史记录表太麻烦了


把你的表'LeaveInfoHistory'中相应的一个字段改为int(而不是自增)就行了。你重新改变一下表中区区一个字段的定义也嫌“太麻烦”?

另外这可以作为一个教训。明明是从别的表中复制数据进来(的历史表),设计“自增字段”的人是不是技术和经验上很成问题啊?如果可能,以后不要让这个人再设计数据库表。
------解决方案--------------------
引用:
我们有十几个表,都要写字段名,不是太麻烦了吗?我想取消表的自动增长,导历史记录表太麻烦了


什么“十几个表”?

不是这么多人都明确地告诉你只有表'LeaveInfoHistory'嘛!
------解决方案--------------------
引用:
引用:我们有十几个表,都要写字段名,不是太麻烦了吗?我想取消表的自动增长,导历史记录表太麻烦了

把你的表'LeaveInfoHistory'中相应的一个字段改为int(而不是自增)就行了。你重新改变一下表中区区一个字段的定义也嫌“太麻烦”?

另外这可以作为一个教训。明明是从别的表中复制数据进来(的历史表),设计“自增字段”的……
表估计是他们老师设计的