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

求教:select SCOPE_IDENTITY失效!
我开发一个项目,和数据库取值用的是数据集,不是存储过程。一个表叫equipment,它的ID是自增长的,我要执行一个数据插入后搜索当时的最末ID是什么,于是我编写一个insert语句后跟着用select SCOPE_IDENTITY来查询ID,但是这个时候在数据库中可以查询到正确的数,但是在程序里面跟踪断点,却发现返回的ID数是1。我把具体SQL语句和在程序中调用的代码贴出来:
sql: INSERT INTO equipment
  (equipmentnum)
VALUES (@equipmentnum);
SELECT equipmentid FROM equipment WHERE (equipmentid = SCOPE_IDENTITY())
我把这个数据集命名为:InsertQueryforeq
程序里面:
  equipmentid = Convert.ToInt32(taeq.InsertQueryforeq("equipmentnum"));
就是在这里跟踪断点,发现返回是1,但是把这句SQL在数据库里面新建个文件进行查询,却可以显示正确的数,我非常困惑。而且我在网上搜索好久,就算替换成SELECT IDENT_CURRENT('equipment')也是同样情况
曾经有类似的帖子,提到触发器神马的,但是我始终操作一张表,插入后直接查询,难道和触发器有关?
希望有类似经验的达人们给予指教,万分感谢!
 

 

------解决方案--------------------
应该是 select @@IDENTITY
楼主搞错了
------解决方案--------------------


SELECT SCOPE_IDENTITY() AS [SCOPE_IDENTITY]