Création
d'entreprise
Posez votre question Signaler

[ SQL ] Commande DELETE... CASCADE [Résolu]

Jon301 - Dernière réponse le 6 juin 2010 à 15:01
Bonjour à tous,
J'ai un petit problème concernant une requete SQL
D'abord voici ce qu'on me demande :

Supprimer tout client ayant au moins un film en sa possession depuis + de 6 mois (Il faut d'abord supprimer les entrées dans toutes les tables qui contiennent une référence au clients supprimés).

Et voici ce que j'ai fait :

DELETE FROM Client
WHERE Login =
(SELECT L.Login
FROM Client C, Location L
WHERE C.Login = L.Login
AND MONTHS_BETWEEN (DateEnvoi, SYSDATE) > 6
AND DateRetour IS NULL) ;

Cette requete traite la 1ere partie du problème
Mais je n'arrive pas a traiter ce qui est demandé entre parentheses... (suppression en cascade...)
La commande DELETE CASCADE FROM CLIENT n'existe pas...
Y a t-il un moyen pour le faire ?
Ou bien est ce que ce traitement est fait automatiquement à partir du moment où la table a été créee avec la condition ON DELETE CASCADE ?

Merci d'avance,

Jon301
Lire la suite 

[ SQL ] Commande DELETE... CASCADE »

4 réponses
Réponse
+11
moins plus
Hello,

Pour info, la commande suivante fonctionne:

delete from Table1 cascade where ......

A+

Serge
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

Si t'as des problèmes avec :

"MONTHS_BETWEEN (DateEnvoi, SYSDATE) > 6 "

alors utilise:

(TO_CHAR(SYSDATE, 'YYYYMM') - (TO_CHAR (DateEnvoi, 'YYYYMM')) > 6)


Si tu remarques je tiens compte de l'année aussi, car janvier 2004 et février 2005 il y a 13 mois, si tu regardes que le mois il te retourneras 1.

De plus, pour supprimer un enrégistrement et que sa suppression se répercute dans dans les autres table lié par "REFERENCES" alors il te faut apporter une modification sur table avec "ON DELETE CASCADE". Avvec cette fonction la suppression se fera dans toute les table lié.


Cire
finiderire- 25 sept. 2007 à 16:52
Bonjour,

Je souhaite écrire un script SQL qui vide les tables de ma base de données.
Mon problème est que la commande DELETE FROM matable; retourne une erreur quand matable contient une clef primaire associée à une clef étrangère d'une autre table. Comment apporter une modification sur table avec "ON DELETE CASCADE" ?
Configuration :
PostgreSQL v8.2.5
pgAdmin III v1.6
Windows XP Pro SP2

a+, =)
-=Finiderire=-
coinsé - 6 juin 2010 à 15:01
je voudrai l'instruction complete pour utiliser on delete cascade sur une table qui possede une clé étrangere
Ajouter un commentaire
Ce document intitulé « [ SQL ] Commande DELETE... CASCADE » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?