pour un étudiant, je dois insérer dans la base tous ces jours de présences
(dans une table 'PRESENCES')
puis en même temps inserer le details des activitées réalisées lors de cette
journée (dans 'DETAILS_PRESENCES')
mon problème est que la table 'DETAILS_PRESENCES' contient une clé étrangère
qui fait référence à une colonne autoincrement de la table 'PRESENCES'
Seulement, au moment de créer ma requete, je ne connais pas la valeur
qu'aura cette colonne et donc je ne peux pas renseigner cette valeur dans ma
sous table 'DETAILS_PRESENCES'
pour un étudiant, je dois insérer dans la base tous ces jours de présences (dans une table 'PRESENCES') puis en même temps inserer le details des activitées réalisées lors de cette journée (dans 'DETAILS_PRESENCES')
mon problème est que la table 'DETAILS_PRESENCES' contient une clé étrangère qui fait référence à une colonne autoincrement de la table 'PRESENCES'
Seulement, au moment de créer ma requete, je ne connais pas la valeur qu'aura cette colonne et donc je ne peux pas renseigner cette valeur dans ma sous table 'DETAILS_PRESENCES'
si, utilisez @@IDENTITY. Cette variable de session contient le dernier autoincrément généré quelque soit la table dans laquelle l'insertion vient d'être faite.
Lisez le tutorial Transact SQL que j'ai élaboré : http://sqlpro.developpez.com/cours/sqlserver/transactsql/#L2.5
Comment faites-vous ?
J'espère avoir été clair dans mes explications ?
Merci Olivier
A +
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
[ Olivier ] a écrit :
Bonjour,
J'ai un problème typique débutant, soit :
pour un étudiant, je dois insérer dans la base tous ces jours de présences
(dans une table 'PRESENCES')
puis en même temps inserer le details des activitées réalisées lors de cette
journée (dans 'DETAILS_PRESENCES')
mon problème est que la table 'DETAILS_PRESENCES' contient une clé étrangère
qui fait référence à une colonne autoincrement de la table 'PRESENCES'
Seulement, au moment de créer ma requete, je ne connais pas la valeur
qu'aura cette colonne et donc je ne peux pas renseigner cette valeur dans ma
sous table 'DETAILS_PRESENCES'
si, utilisez @@IDENTITY.
Cette variable de session contient le dernier autoincrément généré
quelque soit la table dans laquelle l'insertion vient d'être faite.
Lisez le tutorial Transact SQL que j'ai élaboré :
http://sqlpro.developpez.com/cours/sqlserver/transactsql/#L2.5
Comment faites-vous ?
J'espère avoir été clair dans mes explications ?
Merci
Olivier
A +
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
pour un étudiant, je dois insérer dans la base tous ces jours de présences (dans une table 'PRESENCES') puis en même temps inserer le details des activitées réalisées lors de cette journée (dans 'DETAILS_PRESENCES')
mon problème est que la table 'DETAILS_PRESENCES' contient une clé étrangère qui fait référence à une colonne autoincrement de la table 'PRESENCES'
Seulement, au moment de créer ma requete, je ne connais pas la valeur qu'aura cette colonne et donc je ne peux pas renseigner cette valeur dans ma sous table 'DETAILS_PRESENCES'
si, utilisez @@IDENTITY. Cette variable de session contient le dernier autoincrément généré quelque soit la table dans laquelle l'insertion vient d'être faite.
Lisez le tutorial Transact SQL que j'ai élaboré : http://sqlpro.developpez.com/cours/sqlserver/transactsql/#L2.5
Comment faites-vous ?
J'espère avoir été clair dans mes explications ?
Merci Olivier
A +
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
Thiery QUELNER
Si tu passes par de la programmation, tu inseres dans un premier temps ton enregistrement dans la table principale PRESENCES. Puis tu executes la requête select @@identify qui va te renvoyer la derniere valeur incrément qui a été utilisée. Pour finir, tu insères tes enregistrements dans la table détail avec la valeur récupérée dans ton champ reposant sur la clé étrangere. Naturellement, tu dois insérer un enregistrement après l'autre.
Cordialement
Si tu passes par de la programmation, tu inseres dans un premier temps ton
enregistrement dans la table principale PRESENCES.
Puis tu executes la requête select @@identify qui va te renvoyer la derniere
valeur incrément qui a été utilisée. Pour finir, tu insères tes
enregistrements dans la table détail avec la valeur récupérée dans ton champ
reposant sur la clé étrangere.
Naturellement, tu dois insérer un enregistrement après l'autre.
Si tu passes par de la programmation, tu inseres dans un premier temps ton enregistrement dans la table principale PRESENCES. Puis tu executes la requête select @@identify qui va te renvoyer la derniere valeur incrément qui a été utilisée. Pour finir, tu insères tes enregistrements dans la table détail avec la valeur récupérée dans ton champ reposant sur la clé étrangere. Naturellement, tu dois insérer un enregistrement après l'autre.
Cordialement
[ Olivier ]
>>Naturellement, tu dois insérer un enregistrement après l'autre.
justement, pour l'instant je prépare coté client toutes mes requetes et ensuite je les envoie toutes dans un transaction d'où mon problème.
Mais bon s'il faut les envoyer une par une .... je vais le faire.
Merci Olivier
"Thiery QUELNER" a écrit dans le message de news: %
Si tu passes par de la programmation, tu inseres dans un premier temps ton enregistrement dans la table principale PRESENCES. Puis tu executes la requête select @@identify qui va te renvoyer la derniere valeur incrément qui a été utilisée. Pour finir, tu insères tes enregistrements dans la table détail avec la valeur récupérée dans ton champ reposant sur la clé étrangere. Naturellement, tu dois insérer un enregistrement après l'autre.
Cordialement
>>Naturellement, tu dois insérer un enregistrement après l'autre.
justement, pour l'instant je prépare coté client toutes mes requetes et
ensuite je les envoie toutes dans un transaction d'où mon problème.
Mais bon s'il faut les envoyer une par une .... je vais le faire.
Merci
Olivier
"Thiery QUELNER" <weedoox@yahoo.com> a écrit dans le message de news:
%23cx8VLGFHHA.4880@TK2MSFTNGP03.phx.gbl...
Si tu passes par de la programmation, tu inseres dans un premier temps ton
enregistrement dans la table principale PRESENCES.
Puis tu executes la requête select @@identify qui va te renvoyer la
derniere valeur incrément qui a été utilisée. Pour finir, tu insères tes
enregistrements dans la table détail avec la valeur récupérée dans ton
champ reposant sur la clé étrangere.
Naturellement, tu dois insérer un enregistrement après l'autre.
>>Naturellement, tu dois insérer un enregistrement après l'autre.
justement, pour l'instant je prépare coté client toutes mes requetes et ensuite je les envoie toutes dans un transaction d'où mon problème.
Mais bon s'il faut les envoyer une par une .... je vais le faire.
Merci Olivier
"Thiery QUELNER" a écrit dans le message de news: %
Si tu passes par de la programmation, tu inseres dans un premier temps ton enregistrement dans la table principale PRESENCES. Puis tu executes la requête select @@identify qui va te renvoyer la derniere valeur incrément qui a été utilisée. Pour finir, tu insères tes enregistrements dans la table détail avec la valeur récupérée dans ton champ reposant sur la clé étrangere. Naturellement, tu dois insérer un enregistrement après l'autre.
Cordialement
Fred BROUARD
[ Olivier ] a écrit :
Naturellement, tu dois insérer un enregistrement après l'autre.
justement, pour l'instant je prépare coté client toutes mes requetes et ensuite je les envoie toutes dans un transaction d'où mon problème.
Mais bon s'il faut les envoyer une par une .... je vais le faire.
Mais non, utilisez une procédure stiockée, c'est faitpour ça !
CREATE PROCEDURE P_I_DATA @DATA1, @DATA2, @DATA3... AS
INSERT INTO PRESENCE VALUES (@DATA1, @DATA2 ... )
INSERT INTO PRESENCE_DETAIL VALUES (@@IDENTIY, @DATA3, ... )
A +
Merci Olivier
"Thiery QUELNER" a écrit dans le message de news: %
Si tu passes par de la programmation, tu inseres dans un premier temps ton enregistrement dans la table principale PRESENCES. Puis tu executes la requête select @@identify qui va te renvoyer la derniere valeur incrément qui a été utilisée. Pour finir, tu insères tes enregistrements dans la table détail avec la valeur récupérée dans ton champ reposant sur la clé étrangere. Naturellement, tu dois insérer un enregistrement après l'autre.
Cordialement
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
[ Olivier ] a écrit :
Naturellement, tu dois insérer un enregistrement après l'autre.
justement, pour l'instant je prépare coté client toutes mes requetes et
ensuite je les envoie toutes dans un transaction d'où mon problème.
Mais bon s'il faut les envoyer une par une .... je vais le faire.
Mais non, utilisez une procédure stiockée, c'est faitpour ça !
CREATE PROCEDURE P_I_DATA @DATA1, @DATA2, @DATA3...
AS
INSERT INTO PRESENCE VALUES (@DATA1, @DATA2 ... )
INSERT INTO PRESENCE_DETAIL VALUES (@@IDENTIY, @DATA3, ... )
A +
Merci
Olivier
"Thiery QUELNER" <weedoox@yahoo.com> a écrit dans le message de news:
%23cx8VLGFHHA.4880@TK2MSFTNGP03.phx.gbl...
Si tu passes par de la programmation, tu inseres dans un premier temps ton
enregistrement dans la table principale PRESENCES.
Puis tu executes la requête select @@identify qui va te renvoyer la
derniere valeur incrément qui a été utilisée. Pour finir, tu insères tes
enregistrements dans la table détail avec la valeur récupérée dans ton
champ reposant sur la clé étrangere.
Naturellement, tu dois insérer un enregistrement après l'autre.
Cordialement
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Naturellement, tu dois insérer un enregistrement après l'autre.
justement, pour l'instant je prépare coté client toutes mes requetes et ensuite je les envoie toutes dans un transaction d'où mon problème.
Mais bon s'il faut les envoyer une par une .... je vais le faire.
Mais non, utilisez une procédure stiockée, c'est faitpour ça !
CREATE PROCEDURE P_I_DATA @DATA1, @DATA2, @DATA3... AS
INSERT INTO PRESENCE VALUES (@DATA1, @DATA2 ... )
INSERT INTO PRESENCE_DETAIL VALUES (@@IDENTIY, @DATA3, ... )
A +
Merci Olivier
"Thiery QUELNER" a écrit dans le message de news: %
Si tu passes par de la programmation, tu inseres dans un premier temps ton enregistrement dans la table principale PRESENCES. Puis tu executes la requête select @@identify qui va te renvoyer la derniere valeur incrément qui a été utilisée. Pour finir, tu insères tes enregistrements dans la table détail avec la valeur récupérée dans ton champ reposant sur la clé étrangere. Naturellement, tu dois insérer un enregistrement après l'autre.
Cordialement
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
Gilles LE BARBIER
Je ne sais pas si c'est très propre
Les présences tu en connais le nombre ? Les détails tu connais le nombre par présence ?
tu peux retirer l'autoincrément le temp d'insérer tes presences et tes détails
et tu remet en place l'autoincrement
qu'est ce que vous en pensez les PRO
Gilles
pour un étudiant, je dois insérer dans la base tous ces jours de présences (dans une table 'PRESENCES') puis en même temps inserer le details des activitées réalisées lors de cette journée (dans 'DETAILS_PRESENCES')
mon problème est que la table 'DETAILS_PRESENCES' contient une clé étrangère qui fait référence à une colonne autoincrement de la table 'PRESENCES'
Seulement, au moment de créer ma requete, je ne connais pas la valeur qu'aura
Je ne sais pas si c'est très propre
Les présences tu en connais le nombre ?
Les détails tu connais le nombre par présence ?
tu peux retirer l'autoincrément le temp d'insérer tes presences et tes
détails
et tu remet en place l'autoincrement
qu'est ce que vous en pensez les PRO
Gilles
pour un étudiant, je dois insérer dans la base tous ces jours de présences
(dans une table 'PRESENCES')
puis en même temps inserer le details des activitées réalisées lors de
cette journée (dans 'DETAILS_PRESENCES')
mon problème est que la table 'DETAILS_PRESENCES' contient une clé
étrangère qui fait référence à une colonne autoincrement de la table
'PRESENCES'
Seulement, au moment de créer ma requete, je ne connais pas la valeur
qu'aura
Les présences tu en connais le nombre ? Les détails tu connais le nombre par présence ?
tu peux retirer l'autoincrément le temp d'insérer tes presences et tes détails
et tu remet en place l'autoincrement
qu'est ce que vous en pensez les PRO
Gilles
pour un étudiant, je dois insérer dans la base tous ces jours de présences (dans une table 'PRESENCES') puis en même temps inserer le details des activitées réalisées lors de cette journée (dans 'DETAILS_PRESENCES')
mon problème est que la table 'DETAILS_PRESENCES' contient une clé étrangère qui fait référence à une colonne autoincrement de la table 'PRESENCES'
Seulement, au moment de créer ma requete, je ne connais pas la valeur qu'aura
[ Olivier ]
>> Mais non, utilisez une procédure stiockée, c'est fait pour ça !
OK je vais donc voir ceci. par contre, sur votre site : http://sqlpro.developpez.com/cours/sqlaz/techniques/#L6
vous prenez un exemple dans lequels vous n'avez a inserer qu'une adresse. Et si vous aviez plusieures adresses ? Quels type de paramêtres prendriez-vous ?
Vous feriez une boucle While ... mais sur quel param ?
Auriez-vous un exemple si vous deviez inserer plusieur adresse pour le même Client ? toujours dans cette procédure stockée.
Merci beaucoup
Olivier
"Fred BROUARD" a écrit dans le message de news:
[ Olivier ] a écrit :
Naturellement, tu dois insérer un enregistrement après l'autre.
justement, pour l'instant je prépare coté client toutes mes requetes et ensuite je les envoie toutes dans un transaction d'où mon problème.
Mais bon s'il faut les envoyer une par une .... je vais le faire.
Mais non, utilisez une procédure stiockée, c'est faitpour ça !
CREATE PROCEDURE P_I_DATA @DATA1, @DATA2, @DATA3... AS
INSERT INTO PRESENCE VALUES (@DATA1, @DATA2 ... )
INSERT INTO PRESENCE_DETAIL VALUES (@@IDENTIY, @DATA3, ... )
A +
Merci Olivier
"Thiery QUELNER" a écrit dans le message de news: %
Si tu passes par de la programmation, tu inseres dans un premier temps ton enregistrement dans la table principale PRESENCES. Puis tu executes la requête select @@identify qui va te renvoyer la derniere valeur incrément qui a été utilisée. Pour finir, tu insères tes enregistrements dans la table détail avec la valeur récupérée dans ton champ reposant sur la clé étrangere. Naturellement, tu dois insérer un enregistrement après l'autre.
Cordialement
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
>> Mais non, utilisez une procédure stiockée, c'est fait pour ça !
OK je vais donc voir ceci.
par contre, sur votre site :
http://sqlpro.developpez.com/cours/sqlaz/techniques/#L6
vous prenez un exemple dans lequels vous n'avez a inserer qu'une adresse. Et
si vous aviez plusieures adresses ?
Quels type de paramêtres prendriez-vous ?
Vous feriez une boucle While ... mais sur quel param ?
Auriez-vous un exemple si vous deviez inserer plusieur adresse pour le même
Client ?
toujours dans cette procédure stockée.
Merci beaucoup
Olivier
"Fred BROUARD" <brouardf@club-internet.fr> a écrit dans le message de news:
eqx8YwGFHHA.3304@TK2MSFTNGP05.phx.gbl...
[ Olivier ] a écrit :
Naturellement, tu dois insérer un enregistrement après l'autre.
justement, pour l'instant je prépare coté client toutes mes requetes et
ensuite je les envoie toutes dans un transaction d'où mon problème.
Mais bon s'il faut les envoyer une par une .... je vais le faire.
Mais non, utilisez une procédure stiockée, c'est faitpour ça !
CREATE PROCEDURE P_I_DATA @DATA1, @DATA2, @DATA3...
AS
INSERT INTO PRESENCE VALUES (@DATA1, @DATA2 ... )
INSERT INTO PRESENCE_DETAIL VALUES (@@IDENTIY, @DATA3, ... )
A +
Merci
Olivier
"Thiery QUELNER" <weedoox@yahoo.com> a écrit dans le message de news:
%23cx8VLGFHHA.4880@TK2MSFTNGP03.phx.gbl...
Si tu passes par de la programmation, tu inseres dans un premier temps
ton enregistrement dans la table principale PRESENCES.
Puis tu executes la requête select @@identify qui va te renvoyer la
derniere valeur incrément qui a été utilisée. Pour finir, tu insères tes
enregistrements dans la table détail avec la valeur récupérée dans ton
champ reposant sur la clé étrangere.
Naturellement, tu dois insérer un enregistrement après l'autre.
Cordialement
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
>> Mais non, utilisez une procédure stiockée, c'est fait pour ça !
OK je vais donc voir ceci. par contre, sur votre site : http://sqlpro.developpez.com/cours/sqlaz/techniques/#L6
vous prenez un exemple dans lequels vous n'avez a inserer qu'une adresse. Et si vous aviez plusieures adresses ? Quels type de paramêtres prendriez-vous ?
Vous feriez une boucle While ... mais sur quel param ?
Auriez-vous un exemple si vous deviez inserer plusieur adresse pour le même Client ? toujours dans cette procédure stockée.
Merci beaucoup
Olivier
"Fred BROUARD" a écrit dans le message de news:
[ Olivier ] a écrit :
Naturellement, tu dois insérer un enregistrement après l'autre.
justement, pour l'instant je prépare coté client toutes mes requetes et ensuite je les envoie toutes dans un transaction d'où mon problème.
Mais bon s'il faut les envoyer une par une .... je vais le faire.
Mais non, utilisez une procédure stiockée, c'est faitpour ça !
CREATE PROCEDURE P_I_DATA @DATA1, @DATA2, @DATA3... AS
INSERT INTO PRESENCE VALUES (@DATA1, @DATA2 ... )
INSERT INTO PRESENCE_DETAIL VALUES (@@IDENTIY, @DATA3, ... )
A +
Merci Olivier
"Thiery QUELNER" a écrit dans le message de news: %
Si tu passes par de la programmation, tu inseres dans un premier temps ton enregistrement dans la table principale PRESENCES. Puis tu executes la requête select @@identify qui va te renvoyer la derniere valeur incrément qui a été utilisée. Pour finir, tu insères tes enregistrements dans la table détail avec la valeur récupérée dans ton champ reposant sur la clé étrangere. Naturellement, tu dois insérer un enregistrement après l'autre.
Cordialement
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
Fred
dans : news:, [ Olivier ] écrivait :
Bonjour,
Bonsoir,
J'ai un problème typique débutant, soit :
[...]
Seulement, au moment de créer ma requete, je ne connais pas la valeur qu'aura cette colonne et donc je ne peux pas renseigner cette valeur dans ma sous table 'DETAILS_PRESENCES'
Comment faites-vous ?
J'utilise beaucoup la clause OUTPUT sous SQL 2005, mais comme tu ne précises pas quelle base tu utilises je ne sais pas si cela te sera utile.
-- Fred http://www.cerber mail.com/?3kA6ftaCvT (enlever l'espace) http://www.mailfusible.com/?3kA6ftaCvT
dans : news:etVqM5FFHHA.2452@TK2MSFTNGP06.phx.gbl,
[ Olivier ] écrivait :
Bonjour,
Bonsoir,
J'ai un problème typique débutant, soit :
[...]
Seulement, au moment de créer ma requete, je ne connais pas la valeur
qu'aura cette colonne et donc je ne peux pas renseigner cette valeur
dans ma sous table 'DETAILS_PRESENCES'
Comment faites-vous ?
J'utilise beaucoup la clause OUTPUT sous SQL 2005, mais comme tu ne
précises pas quelle base tu utilises je ne sais pas si cela te sera
utile.
--
Fred
http://www.cerber mail.com/?3kA6ftaCvT (enlever l'espace)
http://www.mailfusible.com/?3kA6ftaCvT
Seulement, au moment de créer ma requete, je ne connais pas la valeur qu'aura cette colonne et donc je ne peux pas renseigner cette valeur dans ma sous table 'DETAILS_PRESENCES'
Comment faites-vous ?
J'utilise beaucoup la clause OUTPUT sous SQL 2005, mais comme tu ne précises pas quelle base tu utilises je ne sais pas si cela te sera utile.
-- Fred http://www.cerber mail.com/?3kA6ftaCvT (enlever l'espace) http://www.mailfusible.com/?3kA6ftaCvT
Olivier
SQL 2005
Merci Olivier
"Fred" a écrit dans le message de news:
dans : news:, [ Olivier ] écrivait :
Bonjour,
Bonsoir,
J'ai un problème typique débutant, soit :
[...]
Seulement, au moment de créer ma requete, je ne connais pas la valeur qu'aura cette colonne et donc je ne peux pas renseigner cette valeur dans ma sous table 'DETAILS_PRESENCES'
Comment faites-vous ?
J'utilise beaucoup la clause OUTPUT sous SQL 2005, mais comme tu ne précises pas quelle base tu utilises je ne sais pas si cela te sera utile.
-- Fred http://www.cerber mail.com/?3kA6ftaCvT (enlever l'espace) http://www.mailfusible.com/?3kA6ftaCvT
SQL 2005
Merci
Olivier
"Fred" <foleide@libre.france> a écrit dans le message de news:
eUnrO0LFHHA.3468@TK2MSFTNGP04.phx.gbl...
dans : news:etVqM5FFHHA.2452@TK2MSFTNGP06.phx.gbl,
[ Olivier ] écrivait :
Bonjour,
Bonsoir,
J'ai un problème typique débutant, soit :
[...]
Seulement, au moment de créer ma requete, je ne connais pas la valeur
qu'aura cette colonne et donc je ne peux pas renseigner cette valeur
dans ma sous table 'DETAILS_PRESENCES'
Comment faites-vous ?
J'utilise beaucoup la clause OUTPUT sous SQL 2005, mais comme tu ne
précises pas quelle base tu utilises je ne sais pas si cela te sera utile.
--
Fred
http://www.cerber mail.com/?3kA6ftaCvT (enlever l'espace)
http://www.mailfusible.com/?3kA6ftaCvT
Seulement, au moment de créer ma requete, je ne connais pas la valeur qu'aura cette colonne et donc je ne peux pas renseigner cette valeur dans ma sous table 'DETAILS_PRESENCES'
Comment faites-vous ?
J'utilise beaucoup la clause OUTPUT sous SQL 2005, mais comme tu ne précises pas quelle base tu utilises je ne sais pas si cela te sera utile.
-- Fred http://www.cerber mail.com/?3kA6ftaCvT (enlever l'espace) http://www.mailfusible.com/?3kA6ftaCvT
Fred BROUARD
[ Olivier ] a écrit :
Mais non, utilisez une procédure stiockée, c'est fait pour ça !
OK je vais donc voir ceci. par contre, sur votre site : http://sqlpro.developpez.com/cours/sqlaz/techniques/#L6
vous prenez un exemple dans lequels vous n'avez a inserer qu'une adresse. Et si vous aviez plusieures adresses ?
Emboitez vos procédures stockées :
la proc stock insère client insère 1 client et fait appel à proc stock insère 1 adresse. Si plusieurs adresse appelée ensuite la proc stock insère 1 adresse.
Quels type de paramêtres prendriez-vous ?
Vous feriez une boucle While ... mais sur quel param ?
Auriez-vous un exemple si vous deviez inserer plusieur adresse pour le même Client ? toujours dans cette procédure stockée.
Merci beaucoup
Olivier
A +
"Fred BROUARD" a écrit dans le message de news:
[ Olivier ] a écrit :
Naturellement, tu dois insérer un enregistrement après l'autre.
justement, pour l'instant je prépare coté client toutes mes requetes et ensuite je les envoie toutes dans un transaction d'où mon problème.
Mais bon s'il faut les envoyer une par une .... je vais le faire.
Mais non, utilisez une procédure stiockée, c'est faitpour ça !
CREATE PROCEDURE P_I_DATA @DATA1, @DATA2, @DATA3... AS
INSERT INTO PRESENCE VALUES (@DATA1, @DATA2 ... )
INSERT INTO PRESENCE_DETAIL VALUES (@@IDENTIY, @DATA3, ... )
A +
Merci Olivier
"Thiery QUELNER" a écrit dans le message de news: %
Si tu passes par de la programmation, tu inseres dans un premier temps ton enregistrement dans la table principale PRESENCES. Puis tu executes la requête select @@identify qui va te renvoyer la derniere valeur incrément qui a été utilisée. Pour finir, tu insères tes enregistrements dans la table détail avec la valeur récupérée dans ton champ reposant sur la clé étrangere. Naturellement, tu dois insérer un enregistrement après l'autre.
Cordialement
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
[ Olivier ] a écrit :
Mais non, utilisez une procédure stiockée, c'est fait pour ça !
OK je vais donc voir ceci.
par contre, sur votre site :
http://sqlpro.developpez.com/cours/sqlaz/techniques/#L6
vous prenez un exemple dans lequels vous n'avez a inserer qu'une adresse. Et
si vous aviez plusieures adresses ?
Emboitez vos procédures stockées :
la proc stock insère client insère 1 client et fait appel à proc stock
insère 1 adresse.
Si plusieurs adresse appelée ensuite la proc stock insère 1 adresse.
Quels type de paramêtres prendriez-vous ?
Vous feriez une boucle While ... mais sur quel param ?
Auriez-vous un exemple si vous deviez inserer plusieur adresse pour le même
Client ?
toujours dans cette procédure stockée.
Merci beaucoup
Olivier
A +
"Fred BROUARD" <brouardf@club-internet.fr> a écrit dans le message de news:
eqx8YwGFHHA.3304@TK2MSFTNGP05.phx.gbl...
[ Olivier ] a écrit :
Naturellement, tu dois insérer un enregistrement après l'autre.
justement, pour l'instant je prépare coté client toutes mes requetes et
ensuite je les envoie toutes dans un transaction d'où mon problème.
Mais bon s'il faut les envoyer une par une .... je vais le faire.
Mais non, utilisez une procédure stiockée, c'est faitpour ça !
CREATE PROCEDURE P_I_DATA @DATA1, @DATA2, @DATA3...
AS
INSERT INTO PRESENCE VALUES (@DATA1, @DATA2 ... )
INSERT INTO PRESENCE_DETAIL VALUES (@@IDENTIY, @DATA3, ... )
A +
Merci
Olivier
"Thiery QUELNER" <weedoox@yahoo.com> a écrit dans le message de news:
%23cx8VLGFHHA.4880@TK2MSFTNGP03.phx.gbl...
Si tu passes par de la programmation, tu inseres dans un premier temps
ton enregistrement dans la table principale PRESENCES.
Puis tu executes la requête select @@identify qui va te renvoyer la
derniere valeur incrément qui a été utilisée. Pour finir, tu insères tes
enregistrements dans la table détail avec la valeur récupérée dans ton
champ reposant sur la clé étrangere.
Naturellement, tu dois insérer un enregistrement après l'autre.
Cordialement
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Mais non, utilisez une procédure stiockée, c'est fait pour ça !
OK je vais donc voir ceci. par contre, sur votre site : http://sqlpro.developpez.com/cours/sqlaz/techniques/#L6
vous prenez un exemple dans lequels vous n'avez a inserer qu'une adresse. Et si vous aviez plusieures adresses ?
Emboitez vos procédures stockées :
la proc stock insère client insère 1 client et fait appel à proc stock insère 1 adresse. Si plusieurs adresse appelée ensuite la proc stock insère 1 adresse.
Quels type de paramêtres prendriez-vous ?
Vous feriez une boucle While ... mais sur quel param ?
Auriez-vous un exemple si vous deviez inserer plusieur adresse pour le même Client ? toujours dans cette procédure stockée.
Merci beaucoup
Olivier
A +
"Fred BROUARD" a écrit dans le message de news:
[ Olivier ] a écrit :
Naturellement, tu dois insérer un enregistrement après l'autre.
justement, pour l'instant je prépare coté client toutes mes requetes et ensuite je les envoie toutes dans un transaction d'où mon problème.
Mais bon s'il faut les envoyer une par une .... je vais le faire.
Mais non, utilisez une procédure stiockée, c'est faitpour ça !
CREATE PROCEDURE P_I_DATA @DATA1, @DATA2, @DATA3... AS
INSERT INTO PRESENCE VALUES (@DATA1, @DATA2 ... )
INSERT INTO PRESENCE_DETAIL VALUES (@@IDENTIY, @DATA3, ... )
A +
Merci Olivier
"Thiery QUELNER" a écrit dans le message de news: %
Si tu passes par de la programmation, tu inseres dans un premier temps ton enregistrement dans la table principale PRESENCES. Puis tu executes la requête select @@identify qui va te renvoyer la derniere valeur incrément qui a été utilisée. Pour finir, tu insères tes enregistrements dans la table détail avec la valeur récupérée dans ton champ reposant sur la clé étrangere. Naturellement, tu dois insérer un enregistrement après l'autre.
Cordialement
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
Fred BROUARD
Arnaud CLERET a écrit :
Bonsoir,
Préférez l'utilisation de scope_identity() plutot que @@Identity afin d'être sur de récupérer la dernière valeur générée dans le scope actuel et non de manière globale.
Ce que vous dites est faux !
@@IDENTITY est propre à la session donc il n'y a pas de problème, c'est la dernière insertion d'autoincrément dans la session et quelque soit la table. SCOPE_IDENTITY est plus gourmand en terme de ressources et sa visibilité est limité au module (proc stock, trigger, fonction ou lot) et toujours dans la session.
A +
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
Arnaud CLERET a écrit :
Bonsoir,
Préférez l'utilisation de scope_identity() plutot que @@Identity afin d'être
sur de récupérer la dernière valeur générée dans le scope actuel et non de
manière globale.
Ce que vous dites est faux !
@@IDENTITY est propre à la session donc il n'y a pas de problème, c'est
la dernière insertion d'autoincrément dans la session et quelque soit la
table.
SCOPE_IDENTITY est plus gourmand en terme de ressources et sa visibilité
est limité au module (proc stock, trigger, fonction ou lot) et toujours
dans la session.
A +
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Préférez l'utilisation de scope_identity() plutot que @@Identity afin d'être sur de récupérer la dernière valeur générée dans le scope actuel et non de manière globale.
Ce que vous dites est faux !
@@IDENTITY est propre à la session donc il n'y a pas de problème, c'est la dernière insertion d'autoincrément dans la session et quelque soit la table. SCOPE_IDENTITY est plus gourmand en terme de ressources et sa visibilité est limité au module (proc stock, trigger, fonction ou lot) et toujours dans la session.
A +
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************