不是很明白你的意思取到的总是(insert前的那条数据的主键值),select后的指针并没有指向第一条记录,而是第一条之前。这就是为什么要用next()来获取的原因了,

解决方案 »

  1.   

    在oracle里这样处理:
    t1,t2有级联关系,t1的主键是t2的外键,t2还有一个主键,insert的时候第一种方法:
    先Insert into t1(id,col1,col2...) values(sequence.nextval,value1,value2...),然后执行
    select max(id) from t1
    这时获得的id值是insert前的最大值,总是出错。
    第二种方法:
    先select sequence.nextval as idvalue from dual
    然后连续执行两个insert 语句
    Insert into t1(id,col1,col2...) values(idvalue,value1,value2...)
    Insert into t2(t2id,id,col1,col2...) values(sequence2.nextval,idvalue,value1,value2...)
    这和select的光标定位有啥关系,呵呵在sql server2000里怎么处理这种问题呢?
    也就是sql server按第一种方法,会不会也得不到想要的max(id)