Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
SPT, updatable cursor and last identity value
Message
From
02/04/2010 06:38:09
Cetin Basoz
Engineerica Inc.
Izmir, Turkey
 
 
To
01/04/2010 19:59:20
James Blackburn
Qualty Design Systems, Inc.
Kuna, Idaho, United States
General information
Forum:
Visual FoxPro
Category:
Databases,Tables, Views, Indexing and SQL syntax
Environment versions
Visual FoxPro:
VFP 9 SP2
OS:
Vista
Network:
Windows 2003 Server
Database:
MS SQL Server
Miscellaneous
Thread ID:
01458392
Message ID:
01458480
Views:
57
This message has been marked as a message which has helped to the initial question of the thread.
In SQL server @@identity is visible to the connection that did the insert and returns tha last identity inserted. But here is the problem:
It returns the LAST identity inserted.
-If you did multiple inserts in one go, you get the last only.
-If the table you do insert have trigger doing inserts in other tables then still you get the last identity inserted (and you would never know which table's identity it is).

I have never been a fan of identity and I try to keep away from using identity values. My preference is GUID. I find myself that if I use identity and do multiple inserts either I choose not to get back identity values assigned, or before submitting attach GUID values to track the rows that I inserted. A pain that is not to worth to take when there is GUID instead.
Cetin

>PMFJI, in the database that I use (sybase Sql Anywhere) @@identity is only visible to the connection that did the insert. Is MS Sql different than that?
>
>>>Hi everybody,
>>>
>>>We're using SPT and then a special program to make cursor updatable. I see this code to get the last inserted value
>>>
>>> mysqlexec("select @@identity as keyval",'csrKeyVal', program())
>>>
>>>which doesn't look entirely correct to me - who guarantees that by doing a separate query you'll get the value of the record you just inserted and not someone else in between?
>>>
>>>Is there a better way to get the latest value?
>>>
>>>Thanks in advance.
>>
>>Of course it is not correct. You cannot even guarantee it doing in the same query batch. There are other and reliable ways like:
>>
>>select scope_identitity()
>>
>>select ... from inserted
>>
>>output clause
>>
>>Cetin
Çetin Basöz

The way to Go
Flutter - For mobile, web and desktop.
World's most advanced open source relational database.
.Net for foxheads - Blog (main)
FoxSharp - Blog (mirror)
Welcome to FoxyClasses

LinqPad - C#,VB,F#,SQL,eSQL ... scratchpad
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform