Il est parfois intéressant de récupérer l'identifiant d'un enregistrement que l'on vient d'ajouter à la base SQL Server. Ici nous vous proposons une methode simple.
Programmation > SQL
Recherche :   
Actualité Système Salon Concours Outils Programmation Devparadise Programmation HTML .Net JavaScript VBScript ASP PHP Visual Basic Perl Java Active X SQL XML WAP Delphi Graphisme Flash Web Design Promotion Référencement Publicité Valeur de votre site Outils Systèmes Windows Unix Linux Benchmark Hardware Réseaux locaux Droit Sécurité
Comment récupérer l'ID d'un insert sous SQL Server?
  Auteur : Magali GIARD

Il est parfois intéressant de récupérer l'identifiant d'un enregistrement que l'on vient d'ajouter à la base SQL Server. Ici nous vous proposons une methode simple.

Publicité 
Pour récupérer l'identifiant d'un nouvel enregistrement et être sûr que ce soit bien l' enregistrement qui nous interesse, rien de mieux qu'une procédure stockée.

Nous vous proposons ici une méthode simple qui ne nécessite pas de de==procédure stockée et qui évite de faire un select avec l'ensemble des données que l'on vient d'insérer dans la base de données.

Cette méthode utilise @@IDENTITY et consiste à exécuter la requête INSERT suivie d'une requête SELECT @@IDENTITY dans le même recordset.

Voici la requête : "INSERT INTO Table ( Champ(s) ) VALUES ( valeur(s) ); SELECT @@IDENTITY as ID"

Vous trouverez ci-dessous un exemple en ASP utilisant la récupération de l'ID :

Dans cet exemple, on insere la valeur "test" dans le champ Test de la Table Test ayant comme clé primaire le champ ID.


SQL="INSERT INTO Test (Test) VALUES ('test'); SELECT @@IDENTITY as ID"
...
Set rs = MyCon.Execute(SQL,,1)
   '=> les requêtes seront exécutée telle quelles sont données l'une après l'autre
Set rs= rs.NextRecordset      '=> la données retournée par la deuxième requête (le deuxième recordset) sera l'identifiant
...            '=> de l'enregistrement inséré par la première requête.
ID=rs("ID")

la commande Execute a trois arguments parfois optionnel :
Execute(SQL, Paramètres, Options )
=> SQL : la variable contenant les requêtes à exécuter
=> Paramètres : (optionnel) tableau contenant les paramètres de(s) requête(s).
=> Options : défini comment doit être interprété la commande execute.

Options peut prendre entre autres les valeurs :
-1    <=>    adCmdUnspecified    => le type n'est pas spécifié
1    <=>    adCmdText   => type texte : SQL sera évalué comme tel
2   <=>   adCmdTable   => SQL sera évalué comme un nom de table et la valeur de chaque champ sera retournée.
4   <=>   adCmdStoredProc   => SQL sera évalué comme le nom d'une procédure stockée
8   <=>   adCmdUnknown   => valeur par défaut : type inconnu
256   <=>   adCmdFile   => SQL sera évalué comme étant un nom de fichier
512   <=>   adCmdTableDirect   => SQL sera évalué comme un nom de table
...

A lire aussi sur Devparadise.com :
  • Simulation de la fonction LIMIT de MySQL avec SQL Server
  • MySQL AB sera à Linux Expo Paris
  • MySQL 4.0 est arrivé !
  • Utilisation du module DBD::CSV pour créer un fichier .csv.
  • Comment se référencer sur Lycos.fr
  • A télécharger aussi sur Devparadise.com :
  • XAMPP 1.5.1 pour windows
  • mod_auth_mysql version 1.11 pour Linux/Unix
  • mod_auth_mysql version 1.11 pour windows
  • WinSQL Lite 3.8
  • ezContents 1.01

  • © 1997-2005 tous droits réservés Devparadise.com
    Les logos, et marques déposées sont la propriété de leurs détenteurs respectifs.
    Devparadise.com s'est engagé à respecter la confidentialité des données personnelles régies par la loi 78-17 du 6 janvier 1978.
    Déclaration C.N.I.L. n° 621623
    SQL,SQL Server,INSERT,@@Identity,Identifiant,enregistrement