Rechercher : dans
Par :

[ SQL ] Commande DELETE... CASCADE

Dernière réponse le 12 jun 2008 à 13:48:45 Jon301, le 6 fév 2005 à 13:19:41 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « [ SQL ] Commande DELETE... CASCADE » dans :
Gérer le registre en ligne de commande VoirCette astuce vous permet de gérer la base de registre en ligne de commande avec la commande REG. Ceci pourrait être utile en cas d'infection qui empêche l'accès au registre ou bien lorsqu'on veut créer un batch qui modifie le registre. Remarques...
SQL - Commande SELECT VoirLe langage de manipulation de données Le SQL est à la fois un langage de manipulation de données et un langage de définition de données. Toutefois, la définition de données est l'oeuvre de l'administrateur de la base de données, c'est pourquoi la...
Attaques par injection de commandes SQL VoirInjection de commandes SQL Les attaques par injection de commandes SQL sont des attaques visant les sites web s'appuyant sur des bases de données relationnelles. Dans ce type de sites, des paramètres sont passés à la base de données sous forme...
SQL - Modification de table VoirModification de table Il est possible de supprimer une table grâce à la clause DROP, il existe aussi des commandes moins extrêmes permettant L'ajout de colonnes La modification de colonnes La suppression de colonnes Enfin, il est possible...

1

Cire, le 16 fév 2005 à 19:13:21

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

Répondre à Cire

2

finiderire, le 25 sep 2007 à 16:52:17

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=-

Répondre à finiderire

3

 Eysk, le 12 jun 2008 à 13:48:45
  • +2

Hello,

Pour info, la commande suivante fonctionne:

delete from Table1 cascade where ......

A+

Serge

Répondre à Eysk