OVH Cloud OVH Cloud

Delete en cascade

5 réponses
Avatar
Seb
Bonjour,

J'ai 3 tables :=20
r=E9f=E9rence : id_ref, nom, etc
ligne : id_ligne, id_ref
colonne : id_colonne, id_ligne, texte...
Une r=E9f=E9rence contient plusieurs lignes, qui elles m=EAmes=20
sont constitu=E9es de 2 colonnes.
Jevoudrais faire qqc (dans ma proc=E9dure stock=E9e) du=20
genre :
=3D>Id de la r=E9f=E9rence pass=E9e en param=E8tre de la proc=20
stock=E9e

DELETE FROM reference, ligne, colonne

WHERE=20
reference.id=3D@Id
AND ligne.id_ref=3D@Id
AND colonne.id_ligne=3Dligne.id

Comment est-ce que je peux le mettre en place ?

Merci.

Seb

5 réponses

Avatar
François
Tu dois passer 3 ordres delete dans ta procédure stockée avec les bonnes
clauses dans la clause where du delete. Par exemple : delete from ligne
where id_ref in (select id_ref from reference where reference.id=@id).
François.

"Seb" a écrit dans le message de
news:f12d01c43d7f$2951bca0$
Bonjour,

J'ai 3 tables :
référence : id_ref, nom, etc
ligne : id_ligne, id_ref
colonne : id_colonne, id_ligne, texte...
Une référence contient plusieurs lignes, qui elles mêmes
sont constituées de 2 colonnes.
Jevoudrais faire qqc (dans ma procédure stockée) du
genre :
=>Id de la référence passée en paramètre de la proc
stockée

DELETE FROM reference, ligne, colonne

WHERE
reference.id=@Id
AND ligne.id_ref=@Id
AND colonne.id_ligne=ligne.id

Comment est-ce que je peux le mettre en place ?

Merci.

Seb
Avatar
Seb
Ok, je vais essayer comme ça, merci !
Je remettrai un post si ça ne marche pas...

Seb


-----Message d'origine-----
Tu dois passer 3 ordres delete dans ta procédure stockée


avec les bonnes
clauses dans la clause where du delete. Par exemple :


delete from ligne
where id_ref in (select id_ref from reference where


reference.id=@id).
François.

"Seb" a écrit dans


le message de
news:f12d01c43d7f$2951bca0$
Bonjour,

J'ai 3 tables :
référence : id_ref, nom, etc
ligne : id_ligne, id_ref
colonne : id_colonne, id_ligne, texte...
Une référence contient plusieurs lignes, qui elles mêmes
sont constituées de 2 colonnes.
Jevoudrais faire qqc (dans ma procédure stockée) du
genre :
=>Id de la référence passée en paramètre de la proc
stockée

DELETE FROM reference, ligne, colonne

WHERE
reference.id=@Id
AND ligne.id_ref=@Id
AND colonne.id_ligne=ligne.id

Comment est-ce que je peux le mettre en place ?

Merci.

Seb



.



Avatar
Fred BROUARD
pour un exemple de trigger delete en cascade :
http://sqlpro.developpez.com/TransactSQL/SQL_MSTransactSQL.html#5.4
Quatrième exemple

Cependant, depuis SQL Server 2000 il est possible de gérer l'intégrité référentiel en mode DELETE CASCADE, auquel cas il
est inutile d'écrire le moindre trigger.

A lire :
http://sqlpro.developpez.com/SQL_AZ_7b.html#SCHEMA732

A +

Seb a écrit:
Bonjour,

J'ai 3 tables :
référence : id_ref, nom, etc
ligne : id_ligne, id_ref
colonne : id_colonne, id_ligne, texte...
Une référence contient plusieurs lignes, qui elles mêmes
sont constituées de 2 colonnes.
Jevoudrais faire qqc (dans ma procédure stockée) du
genre :
=>Id de la référence passée en paramètre de la proc
stockée

DELETE FROM reference, ligne, colonne

WHERE
reference.id=@Id
AND ligne.id_ref=@Id
AND colonne.id_ligne=ligne.id

Comment est-ce que je peux le mettre en place ?

Merci.

Seb





--
Frédéric BROUARD, MVP MS SQL Server. Expert Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
Avatar
Seb
Merci pour votre aide.
En fait, pour tout supprimer en cascade, c'est un peu
plus complexe que ça parce que je dois aussi supprimer
des images, dont le nom est stocké dans ma table cellule
(le dernier maillon de mon delete cascade). Donc de
toute façon je vaos être obligé d'utiliser des sous
requêtes pour récupérer la liste de tous les noms à
supprimer

Seb

-----Message d'origine-----
pour un exemple de trigger delete en cascade :
http://sqlpro.developpez.com/TransactSQL/SQL_MSTransactSQ


L.html#5.4
Quatrième exemple

Cependant, depuis SQL Server 2000 il est possible de


gérer l'intégrité référentiel en mode DELETE CASCADE,
auquel cas il
est inutile d'écrire le moindre trigger.

A lire :
http://sqlpro.developpez.com/SQL_AZ_7b.html#SCHEMA732

A +

Seb a écrit:
Bonjour,

J'ai 3 tables :
référence : id_ref, nom, etc
ligne : id_ligne, id_ref
colonne : id_colonne, id_ligne, texte...
Une référence contient plusieurs lignes, qui elles




mêmes
sont constituées de 2 colonnes.
Jevoudrais faire qqc (dans ma procédure stockée) du
genre :
=>Id de la référence passée en paramètre de la proc
stockée

DELETE FROM reference, ligne, colonne

WHERE
reference.id=@Id
AND ligne.id_ref=@Id
AND colonne.id_ligne=ligne.id

Comment est-ce que je peux le mettre en place ?

Merci.

Seb





--
Frédéric BROUARD, MVP MS SQL Server. Expert Langage


SQL / Delphi / web
Livre SQL - col. Référence :


http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros :


http://sqlpro.developpez.com
************************ www.datasapiens.com


*************************

.



Avatar
Seb
Réflexion faite, je peux utiliser les 2 méthodes, non ?
Je crée des liens sur mes tables pour pouvoir utiliser le
on delete cascade, et pour récupérer les noms de mes
images je me fais une super proc stockée qui me renverra
le nom de toutes les images à supprimer...
Mais comment on fait pour lier les tables sous sql
server ?

Merci.

Seb

-----Message d'origine-----
pour un exemple de trigger delete en cascade :
http://sqlpro.developpez.com/TransactSQL/SQL_MSTransactSQ


L.html#5.4
Quatrième exemple

Cependant, depuis SQL Server 2000 il est possible de


gérer l'intégrité référentiel en mode DELETE CASCADE,
auquel cas il
est inutile d'écrire le moindre trigger.

A lire :
http://sqlpro.developpez.com/SQL_AZ_7b.html#SCHEMA732

A +

Seb a écrit:
Bonjour,

J'ai 3 tables :
référence : id_ref, nom, etc
ligne : id_ligne, id_ref
colonne : id_colonne, id_ligne, texte...
Une référence contient plusieurs lignes, qui elles




mêmes
sont constituées de 2 colonnes.
Jevoudrais faire qqc (dans ma procédure stockée) du
genre :
=>Id de la référence passée en paramètre de la proc
stockée

DELETE FROM reference, ligne, colonne

WHERE
reference.id=@Id
AND ligne.id_ref=@Id
AND colonne.id_ligne=ligne.id

Comment est-ce que je peux le mettre en place ?

Merci.

Seb





--
Frédéric BROUARD, MVP MS SQL Server. Expert Langage


SQL / Delphi / web
Livre SQL - col. Référence :


http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros :


http://sqlpro.developpez.com
************************ www.datasapiens.com


*************************

.