Bonjour,
je désirais savoir s'il existe une instruction sous SQL Server indiquant si les lignes d'une table sont référencées dans une autre table.
Je m'explique:
Je développe une application permettant notamment de gérer des produits et les commandes passées sur ces produits.
J'utilise une base de données sous SQL Server 2005 pour le stockage des données.
La relation entre la table des produits T_PRODUIT_PDT et la table des détails commandes (TJ_CDE_PDT) est 1/N.
T_PRODUIT_PDT(PDT_ID, PDT_REF, PDT_DESCRIPTION)
TJ_CDE_PDT(LIG_CDE_ID, CDE_ID, PDT_ID, QUANTITE)
PDT_ID clé primaire de la table T_PRODUIT_PDT est une clé étrangère de la table TJ_CDE_PDT
L'utilisateur pourra sous l'application en cours de développement ajouter, modifier et supprimer des produits. Je n'ai pas défini la contrainte d'intégrité référentielle ON DELETE CASCADE. Ainsi, en cas de tentative de suppression d'un produit se trouvant dans une commande, une exception est levé indiquant l'impossibilité de supprimer le produit. Je désirais empêcher l'utilisateur de pouvoir supprimer un produit si celui-ci se trouve dans une commande.
Je désirais donc ajouter dans la requête SQL de sélection des produits un champ indiquant si l'utilisateur peut supprimer la commande.
Existe-t-il une instruction sous SQL Server indiquant si les lignes d'une table sont référencées dans une autre table ?
J'ai pensé à la requête suivante:
Que pensez-vous de cette solution ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT PDT_ID, PDT_REF, PDT_DESCRIPTION, PDT_SUPPR = CASE WHEN EXISTS(SELECT 1 FROM TJ_CDE_PDT DTL WHERE DTL.PDT_ID = PDT.PDT_ID) THEN 1 ELSE 0 END FROM T_PRODUITS_PDT PDT
Existe-t-il une autre solution ?
Merci d'avance,
++
Partager