in reply to Re: Re: Getting identity after autoincr in FreeTDS/MSSQL/DBI
in thread Getting identity after autoincr in FreeTDS/MSSQL/DBI

wardk,

I think it is different when running over freeTDS on linux, because when I tried to do it as two seperate commands, @@IDENTITY was empty. I think it has something to do with the concept of "current session", but I don't really know.

Nice work in Identity nabber for MSSQL, by the way.

Thanks,
Scott

  • Comment on Re: Re: Re: Getting identity after autoincr in FreeTDS/MSSQL/DBI

Replies are listed 'Best First'.
Re: Re: Re: Re: Getting identity after autoincr in FreeTDS/MSSQL/DBI
by mpeppler (Vicar) on Nov 10, 2001 at 00:38 UTC
    If the value for @@identity is empty when doing this as two requests it means that the select @@identity is done on a different physical connection from the insert. This usually happens when you don't completely flush all the results after the initial insert.

    I'm thinking of adding an attribute to DBD::Sybase that would inhibit the automatic secondary connections to handle multiple concurrent $sth on a single database handle as that causes quite a lot of confusion for people...

    Michael

      Since you are using two commands off one prepare, you may need to
      use the:

      while ( $someVar = $sth->fetch ) { do ( something... ) while ( $sth->{syb_more_results} );

      syntax.

      This is explained in the "Programming the Perl DBI" book
      PG: 326 Don't know if it helps - but it's worth a try.