现在需要一次性往表里插入多条数据,该表没有设置自动编号的字段,请问各位知不知道SQL SERVER 2000里有没有获得行号的函数啊?
就是想取得新追加行的行号值,然后把该值赋给一个字段,实现一次性添加的多条数据的该字段为递增
用@@IDENTITY 似乎是必须有自动编号的字段才能取到值,我查了下在SQL SERVER 2005中有ROW_NUMBER() 函数可以获得行号,不知道2000里面有没有什么办法获得这样的行号?
数据库暂时不能改用2005,还望各位大哥救命啊!

解决方案 »

  1.   

    SQLSERVER2000里面:
    1.增加ID列,设置为IDENTITY,并且为该列设置UNIQUE约束,以防止ID重复.
    2.获取新行的ID请查看下面帖子中邹建演示的方法,尤其是多用户并发情况下使用触发器获得当前连接插入生成的ID的方法.
    http://community.csdn.net/Expert/topic/4868/4868036.xml?temp=.9568903
      

  2.   

    插之前查询一下现在有多少行:select count(*) from table然后在此基础上加1来实现递增.
      

  3.   

    很感谢楼上几位的回复,hellowork(一两清风)的做法是要用到IDENTITY,可我这里是不能设置为自动递增列,mschen(Co-ok)的方法我也试过,可这里是用insert into table1 select data from table2
    也就是一次性往table1里添加多条数据,用mschen(Co-ok)的方法添加的数据的行号都是一个相同的数字,因为insert的时间基本上是同一时间count(*)得出的值一致,现在就是希望能得到累加的行号而且不用系统带的自动递增,能有解决的方案吗?
      

  4.   

    下面的方法应该可能满足你:假如Table1中有column1,column2 int
    insert into table1(column1) select data from table2
    declare @i int
    update table1 set column2=@i,@i=@i+1