 |
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
...
|