Problème de clause OUTPUT
Hello,
Je suis certain que ce problème est vraiment con si pas trivial mais je sèche...
Voici un peu de code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| DECLARE @DTD TABLE(
DTD_ID INT PRIMARY KEY,
NEW_DTD_ID INT,
CONT_ID INT,
PRM_ID INT,
BA_ID TINYINT,
DTD_PRICE_REDUCTION BIT);
INSERT INTO S_PROMO.T_DETAIL_DEMO_DTD(CONT_ID, PRM_ID, BA_ID, DTD_PRICE_REDUCTION)
OUTPUT DTD_ID, INSERTED.DTD_ID, INSERTED.CONT_ID, INSERTED.PRM_ID, INSERTED.BA_ID, INSERTED.DTD_PRICE_REDUCTION
INTO @DTD(DTD_ID, NEW_DTD_ID, CONT_ID, PRM_ID, BA_ID, DTD_PRICE_REDUCTION)
SELECT CONT_ID,
@NEW_PRM_ID,
BA_ID,
DTD_PRICE_REDUCTION
FROM S_PROMO.T_DETAIL_DEMO_DTD
WHERE PRM_ID = @PRM_ID |
Cela se place dans le contexte d'une DB qui modélise des promotions. Ce bout de code fait partie d'une procédure servant à faire une copie d'une promo. La table suffixée par DTD est la table contenant les "fournisseurs en démonstration" (c'est plus complexe que ça mais j'en ai pour 3 page à vous expliquer en détail sinon) qui participe à la promo.
Je fais donc une copie de ceux qui participe à la promo qu'on veut copier (dont l'id est dans @PRM_ID) et j'ai besoin de récupérer le tout car j'ai besoin des nouveaux ID pour faire les copies de lignes dans la table qui références DTD (où stocker les pourcentages auxquels les lignes de DTD sont promotionnées).
J'ai donc créé une variable table qui contient aussi bien le DTD_ID source et le nouveau DTD_ID que je comptais récupérer via la clause OUTPUT de l'ordre INSERT. Pas de souci pour récupérer le nouvel ID via la pseudo-table INSERTED. Mais pour l'ID "source", pas moyen (la première colonne de la clause OUTPUT). J'ai essayé en donnant un alias à la table DTD et en préfixant DTD_ID par cet alias mais cela ne change rien.
Les exemples que je trouve ça et là sur le net ne s'occupe que de récupérer les données des pseudo-tables INSERTED et DELETED. Jamais de les associer avec les données sources...
Comment faut-il donc procéder ??
EDIT : Je pourrais encore m'en sortir en utilisant la clef alternative que possède la table mais ce serait tellement plus facile si je pouvais récupérer l'id source...