昨天,发了这样一个贴子。也有人给了答案就是用 SCOPE_IDENTITY 或 @identyti
今天,我试试了试。。可是 用SCOPE_IDENTITY()这样取来的是NULL.
例:
 C#
 string sql1="insert ........."
string sql2="insert ..(eid....) values(SCOPE_IDENTITY().....)";
下面就是一个SqlConnection  和C#中事务的一些方法。来执行那两条SQL.
但是没有实现理想中的效果。没有取到第一个Sql1 中的自增ID。

解决方案 »

  1.   

    IDENT_CURRENT
    返回为任何会话和任何作用域中的指定表最后生成的标识值。 语法
    IDENT_CURRENT('table_name')
      

  2.   

    这两个sql放在一个command中去做SqlCommand cmd = new SqlCommand(sql1+";"+sql2);
      

  3.   

    IDENT_CURRENT('table_name') 
      

  4.   

    用存储过程返回这个ID啊
    在存储过程中如插入,然后返回@@identity,搞个output参数输出返回值
      

  5.   

    在一条 INSERT、SELECT INTO 或大容量复制语句完成后,@@IDENTITY 中包含此语句产生的最后的标识值。若此语句没有影响任何有标识列的表,则 @@IDENTITY 返回 NULL。若插入了多个行,则会产生多个标识值,@@IDENTITY 返回最后产生的标识值。如果此语句激发一个或多个执行产生标识值的插入操作的触发器,则语句执行后立即调用 @@IDENTITY 将返回由触发器产生的最后的标识值。若 INSERT 或 SELECT INTO 语句失败或大容量复制失败,或事务被回滚,则 @@IDENTITY 值不会还原为以前的设置。在返回插入到表的 @@IDENTITY 列的最后一个值方面,@@IDENTITY、SCOPE_IDENTITY 和 IDENT_CURRENT 函数类似。@@IDENTITY 和 SCOPE_IDENTITY 将返回在当前会话的所有表中生成的最后一个标识值。但是,SCOPE_IDENTITY 只在当前作用域内返回值,而 @@IDENTITY 不限于特定的作用域。
      

  6.   

    http://imay.blog.bokee.net/bloggermodule/blog_viewblog.do?id=969480
    http://www.cnblogs.com/rijing2004/archive/2008/01/09/sqlserver_identity.html
      

  7.   

    在最后加上Select scope_identity()就OK
      

  8.   

    string sqlStr = "insert into temp_table(title) values('sampleTitle') select id = scope_identity()";
    Try this!
      

  9.   

    插入与查询语句放到同一事务里执行,SCOPE_IDENTITY()要比@@IDENTITY 好,推荐使用SCOPE_IDENTITY()
      

  10.   

    SqlComm.CommandText = "INSERT INTO Refer (" + lsField + ") VALUES (" + lsValue + ");SELECT @@identity AS RowNum";
      

  11.   

    ID既然是递增的字段,你去select一下最大的那个值不就行了吗
      

  12.   

    SCOPE_IDENTITY() 会话结束就没有了