Récupérer la ligne qui vient d'être ajoutée dans une table (Access ou SQL Server
romagny13
Messages postés687Date d'inscriptionlundi 10 janvier 2005StatutMembreDernière intervention27 août 2014
-
10 mai 2007 à 14:41
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 2016
-
13 mai 2007 à 18:12
Bonjour,
dans le cas d'une table disposant d'une clé primaire auto incrémentée
voila je voudrais savoir comment je peux faire pour ajouter une ligne à la table et récupérer / connaitre de manière certaine la clé primaire qui a été générée (parce que bien sur certains risuqnet de me dire en faisant select Max(colonnecleprimaire) from matable) ?
j'ai pensé aussi à mettre un verrou sur la ligne mais ce n'est pas réellement envisageable
merci
++
A voir également:
Récupérer la ligne qui vient d'être ajoutée dans une table (Access ou SQL Server
romagny13
Messages postés687Date d'inscriptionlundi 10 janvier 2005StatutMembreDernière intervention27 août 20143 10 mai 2007 à 15:46
Ouai bon j'ai vu l'article de Sweety
en faisant quelque chose du style
DECLARE
@liste
TABLE
([ContactTypeID]
int)INSERT
INTO [ContactType]
([ContactTypeLib]
)OUTPUT
inserted
.[ContactTypeID]
INTO @liste
values
('oui')SELECT
*
FROM @liste
ca marche
mais seulement pour SQL Server 2005 et pas Access donc ...
tout le problême vient du fait que dans une application .NET
il y a 2 cas :
- soit c'est "l'application" qui crée la clé (un unique identifiant par exemple)
- soit c'est la base qui crée la clé primaire dans le cas d'une clé auto incrémentée
et c'est la que se pose le problême car si l'application définit une clé en local (par exemple si on prend un fonctionnement Dataset typé + table Adapters)
si au cours de la saisie un autre utilisateur crée une ligne en base , alors lorsque le premier insérera sa ligne, la clé ne correspondra plus à celle qu'il a en local, et c'est trés visible si par la suite l'utilisateur essaie de modiifer cette même ligne car il aura une exception "accès concurrentiel" (avec requete optimiste)
donc quelle est la réponse concrète à apporter >>
éviter de définir des clés auto incrémentées pour ses tables , préférer par exemple les uniques identifiants ?
ou alors masquer à l'utilisateur la clé auto incrémenté lors de la création d'une ligne puis seulement recharger les données dans application ? (humm pas trop tentant)