背景:--------------------------表A有2各字段,ID(自动编号)和NAME
对表A进行INSERT操作,将前页面接收到的NAME插入到表中。
然后显示出来NAME。以上操作分为2条语句来完成,分别是INSERT

SELECT NAME FROM 表A WHERE ID= MAX(ID)问题:-------------------------
如果多人操作的话,会不会出现MAX(ID)混乱的情况?能否,在INSERT的同时,取得到这个自动编号的ID是多少?这样我通过SELECT NAME FROM 表A WHERE ID = 刚才插入操作影响到的ID.请高手指点,谢谢。

解决方案 »

  1.   

    SELECT NAME FROM 表A WHERE ID=SCOPE_IDENTITY( )
      

  2.   

    冒昧的问一下 子陌红尘,SCOPE_IDENTITY()值是发生在相同作用域中的最后一个 INSERT,这个“作用域“是什么概念?同一个网页内的先后语句,(先为插入,后为SELECT),可以理解为一个作用域麽?
      

  3.   

    SELECT NAME FROM 表A WHERE ID=@@IDENTITY意思和楼上的一样
    所谓作用域你就想象为一个数据库连接就好了,虽然这么说不准确所以,你在用@@IDENTITY的时候一定要插入后紧接着查询,中间不要从连接池中得两次连接
      

  4.   

    谢谢hillhx(曾经的曾经)的回答。问题是,实际情况我做的是网页操作,不是通过查询分析器使用存储过程或触发器。这就意味着,不可能把insert 和 select 写到一个sql语句里。必须得分开写,不可避免两次连接。
      

  5.   

    你可以取一个连接,然后分别执行两次EXCUTE不就成了?只要不取两次连接就成如果这个过程中你必须要有页面的流转,可以先把这个ID取出来作为参数流转到下一个页面,然后再查询
      

  6.   

    哎?这个两次连接是什么概念?是对连接对象而言的麽?比如,insert的连接对象使用的cn
    那么在select的时候,我不释放掉cn,继续使用cn来去数据的话,是不是算一次连接呢?