Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
SPT, updatable cursor and last identity value
Message
De
07/04/2010 13:11:49
 
 
Information générale
Forum:
Visual FoxPro
Catégorie:
Base de données, Tables, Vues, Index et syntaxe SQL
Versions des environnements
Visual FoxPro:
VFP 9 SP2
OS:
Vista
Network:
Windows 2003 Server
Database:
MS SQL Server
Divers
Thread ID:
01458392
Message ID:
01459194
Vues:
53
This message has been marked as a message which has helped to the initial question of the thread.
>>>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
>
>I don't understand how can we use them for the cursor made updatable using technique similar to Vlad's blog. In other words, there is no INSERT command, the changes are done in the cursor, then we do TABLEUPDATE. Then we need to get the ID back. How can we do this?

1) Bind the cursor to a cursoradapter
2) set BatchUpdateCount = 1
3) 
PROC AfterInsert
LOCAL id
#IF SQL 2008
id = cast(null as i)
SQLEXEC(m.this.DataSource,"select ?@m.id=SCOPE_IDENTITY()")
#ELSE
SQLEXEC(m.this.DataSource,"select id=SCOPE_IDENTITY()","DUMMY")
id = DUMMY.id
USE
#ENDIF
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform