begin process at 2012 05 26 20:56:32
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

SQL Server, MSDE, SQL Express

 > 

Requêtes

 > 

récupérer la ligne qui vient d'être ajoutée dans une table (Access ou SQL Server)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

récupérer la ligne qui vient d'être ajoutée dans une table (Access ou SQL Server)

jeudi 10 mai 2007 à 14:41:30 | récupérer la ligne qui vient d'être ajoutée dans une table (Access ou SQL Server)

romagny13

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
++
jeudi 10 mai 2007 à 15:46:46 | Re : récupérer la ligne qui vient d'être ajoutée dans une table (Access ou SQL Server)

romagny13

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)
jeudi 10 mai 2007 à 17:05:42 | Re : récupérer la ligne qui vient d'être ajoutée dans une table (Access ou SQL Server)

lafolle24320

bonjour,
sous sql server tu peux récupérer ta clé qui se trouve dans @@identity
tufais une procédure qui t'insère ta ligne exemple insert into truc (....)
et juste après tu fais @num = @@identity
par contre pour access je sais pas

bon courage

lafolle
dimanche 13 mai 2007 à 18:12:04 | Re : récupérer la ligne qui vient d'être ajoutée dans une table (Access ou SQL Server)

yann_lo_san

Attention, avant de récuperer @@identity, il faut toujours vérifier que l'insert à bien été fait :

declare @lastid int

insert into ect...

if( @@rowcount <= 0 OR @@error <> 0 )
begin
      print 'insert a échoué'
      set @lastid = -1
end
else
begin
      set @lastid = @@identity
end



Cette discussion est classée dans : ligne, récupérer, table, vient, ajoutée


Répondre à ce message

Sujets en rapport avec ce message

trou dans ma table oracle [ par bigood69 ] Bonjour,A cause d'une fausse manipulation Nombre de ligne optimal d'une table? sql server 2000 [ par vindavid38 ] ZanTarBonjour est ce quelqu'un saurait s'il y a une taille optimale (en nombre de ligne) pour une table avec SQL server 2000.??merci bcp de rep@+ ACCESS : commment récupérer les requetes : Create Table [ par tousimages ] Access permet de réaliser facilement des tables grâce à son interface graphique. Toutefois je souhaiterai extraire les requêtes sql de création de tab INSERT a l'id qu'on vient de DELETE [ par Bassman ] Voila j'aimerais savoir sous mysql comment forcé l'insertion dès le "départ", c'est a dire, par exemple dans votre table utilisateur vous venez d'en s Problème extraire une ligne d'une table [ par bubix ] Bonjour, Comment on peut faire pour extraire les lignes d'une table. Ce que j'aimerais c'est d'extraire en premier la première ligne puis la suivante Windev sql [ par fernandsylvain ] demande d'aide j'utilise windev et j'ai un souci pour creer ma requete, mon probleme : j'ai 2 tables une avec 8 rubriques sur 100 lignes(TABLE 2) et u Fantômes [ par Baguauda ] Bonjour,je ne suis pas un grand spécialiste de SQL Server c'est la raison pour laquelle je fais appel a vos connaissances.Présentattion de la probléma Procedure SQL sous oracle de comparaison ligne par ligne de 2 tables [ par lightzeus ] B SELECTIONNER les 5 dernière ligne d'une table [ par nicomilville ] Salut,J'ai un problème avec une requête SQL :Comme indiqué dans le titre je veus selectionner seuleument les 5 derniere ligne mais dans l'ordre mais ç ECRIRE dans une ligne existante d'une table [ par ju0123456789 ] Bonjour,Je voudrais savori si quelqu'un pourrait me communiquer la syntaxe pour ecrire dans une BDD dans une ligne précise. Par exemple je veux écrire


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,638 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales