In MS SQL I've seen two ways to handle returning the last inserted primary
key:
INSERT INTO t_doctors (#ColNames#)
VALUES (#preserveSingleQuotes(ColValues)#);
SELECT SCOPE_IDENTITY() AS newpkey;
This will return the last inserted primary key for the current scope
(session), so there is no concern of race conditions.
INSERT INTO t_doctors (#ColNames#)
VALUES (#preserveSingleQuotes(ColValues)#);
SELECT @@identity AS newpkey;
While this will return the last inserted primary key across scopes
(sessions). Using @@identity will leave you open to potential problems with
race conditions.
This is from information I've read in the BOL as well as been informed from
our DBA. I can say that when using SCOPE_IDENTITY() I've never found any
errors under load, but if anyone else has any input I'd love to hear it.
Rich Kroll
Application Developer
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Message: http://www.houseoffusion.com/lists.cfm/link=i:4:236877
Archives: http://www.houseoffusion.com/cf_lists/threads.cfm/4
Subscription: http://www.houseoffusion.com/lists.cfm/link=s:4
Unsubscribe:
http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=11502.10531.4
Donations & Support: http://www.houseoffusion.com/tiny.cfm/54