Précédent   Forum des professionnels en informatique > Bases de données > Décisions SGBD
Décisions SGBD Forum de décisions sur le choix en bases de données. Le Comparatif
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/08/2004, 11h51   #1
Invité de passage
 
Inscription : juin 2002
Messages : 4
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 4
Points : 1
Points : 1
Par défaut [Procédure stockée]Insert avec renvoi clé primaire?

----------------
Ajoutées par sinarf, merci d'y penser la prochaine fois
----------------


Bonjour,

J'utilise des Procédures Stockées pour insérer des données dans mes tables. La clé primaire est un compteur qui s'incrémente automatiquement.

Je veux que la clé primaire me soit retourné après cet ajout.

Comment faire pour renvoyer la clé primaire à part en faisant par exemple :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CREATE PROCEDURE SGCP_AddMaTable
(
	@Champ2 nvarchar(15),
	@Champ3 int
)
AS
 
INSERT INTO MaTable
(
	Champ2,
	Champ3
)
VALUES
(
	@Champ2,
	@Champ3 
)
GO
suivi de

Code :
1
2
3
4
SELECT Cle
FROM maTable
WHERE Champ2=@Champ2
AND Champ3=@Champ3
(Si il y a des doublons, ne marche pas)

MERCI d'avance
busmik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/08/2004, 15h11   #2
Nouveau Membre du Club
 
Inscription : mars 2003
Messages : 75
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 75
Points : 36
Points : 36
Je cherche exactement la même solution. Mais par programmation Delphi.

Il devrait avoir un moyen tout fait pour qu'il renvoit l'idauto d'un insert !

C'est tellement primordial que l'on ne peut pas se permettre de faire 2 requete de suite, surtout si il y a une multitude d'insertion en même temps sur une appli réseaux ! (risque de récupérer la clé d'un autre).
Arrown est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/08/2004, 17h42   #3
Rédacteur/Modérateur
 
Avatar de fadace
 
Homme Fabien Celaia
Administrateur de base de données
Inscription : octobre 2002
Messages : 3 779
Détails du profil
Informations personnelles :
Nom : Homme Fabien Celaia
Âge : 41
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Service public

Informations forums :
Inscription : octobre 2002
Messages : 3 779
Points : 8 124
Points : 8 124
Envoyer un message via ICQ à fadace Envoyer un message via Skype™ à fadace
et pourquoi pas

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
CREATE PROCEDURE SGCP_AddMaTable 
( 
   @Champ2 nvarchar(15), 
   @Champ3 int 
) 
 
AS 
BEGIN
DECLARE @K  integer
 
BEGIN TRAN
INSERT INTO MaTable 
(    Champ2,    Champ3 ) 
VALUES (    @Champ2,    @Champ3 ) 
 
SELECT @K=MAX(Cle) FROM MaTable
COMMIT
 
RETURN @K
END
L'avantage d'utiliser le BEGIN TRAN, c'est qu'il verrouillera la page empêchant d'autres insertions intempestives. Ceci étant dit, quel est votre SGBDR (ça m'a l'air d'etre du T-SQL) ? Quel est le schéma de verrouillage ?
fadace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/08/2004, 16h14   #4
Invité de passage
 
Inscription : juin 2002
Messages : 4
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 4
Points : 1
Points : 1
Par défaut Effectivement c'est du T-SQL...

Merci pour cette réponse.

C'est tout à fait ce que je voulais faire !!!

_________
Busmic
busmik est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h05.


 
 
 
 
Partenaires

Hébergement Web