IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

SQL Delete Cascade


Sujet :

MS SQL Server

  1. #1
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    53
    D�tails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 53
    Par d�faut SQL Delete Cascade
    Bonjour,

    Voil� j'ai une table Folders contenant:
    FolderID
    FolderName
    ParentFolderID
    o� FolderID est la cl� primaire de la table et ParentFolderID une cl� �trang�re pointant sur FolderID.

    J'aimerais pouvoir supprimer un folder ainsi que tous les �ventuels sous-folders qui pourraient �tre pr�sents.
    Le probl�me est qu'� cause de l'auto jointure je n'ai pas la possibilit� d'utiliser l'option delete cascade. Je dois donc r�aliser ces suppressions programmatiquement.
    Il va certainement falloir que je regarde si chaque parent a ou non des sous folders et commencer � deleter lorsqu'il n'y en a plus et remonter jusquau folder qui devait �tre supprim�.

    Est ce que quelqu'un a une id�e sur la fa�on de proc�der ? Trigger ? cursor ?


    Merci

  2. #2
    Membre confirm�
    Inscrit en
    Mai 2006
    Messages
    161
    D�tails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 161
    Par d�faut
    Citation Envoy� par mschoum
    Bonjour,

    Voil� j'ai une table Folders contenant:
    FolderID
    FolderName
    ParentFolderID
    o� FolderID est la cl� primaire de la table et ParentFolderID une cl� �trang�re pointant sur FolderID.

    J'aimerais pouvoir supprimer un folder ainsi que tous les �ventuels sous-folders qui pourraient �tre pr�sents.
    Le probl�me est qu'� cause de l'auto jointure je n'ai pas la possibilit� d'utiliser l'option delete cascade. Je dois donc r�aliser ces suppressions programmatiquement.
    Il va certainement falloir que je regarde si chaque parent a ou non des sous folders et commencer � deleter lorsqu'il n'y en a plus et remonter jusquau folder qui devait �tre supprim�.

    Est ce que quelqu'un a une id�e sur la fa�on de proc�der ? Trigger ? cursor ?


    Merci
    Bonjou, je ne sais pas ce que j'ai compris la question o� pas. �ssayer ce code:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    create trigger supp_cascade 
    on Folders after delete
    as
    declare @Folder_ID varchar(?)
    set @Folder_ID = (select FolderID  from deleted)
    --if @@error = 0
      delete from Folders  where  ParentFolderID= @Folder_ID

  3. #3
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    53
    D�tails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 53
    Par d�faut
    en fait imaginons que j'ai l'arborescence suivante:

    Folder1
    Folder2
    Folder21
    Folder22
    Folder221
    Folder3

    et que je veuille supprimer folder2
    Les sous folders et sous sous Folder de Folder2 (Folder21, Folder 22 et Folder 221) devraient �galement �tre supprim�s

  4. #4
    Yad
    Yad est d�connect�
    Membre confirm�
    Inscrit en
    Mars 2005
    Messages
    58
    D�tails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 58
    Par d�faut
    En passant par un Sch�ma cela ne devrai pas poser de probl�mes ...

    Ajouter les diff�rentes tables, les lier et param�trer la cascade ...

  5. #5
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    53
    D�tails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 53
    Par d�faut
    Qu'appelles tu par sch�ma ?

  6. #6
    R�dacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de donn�es / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Expert bases de donn�es / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 002
    Billets dans le blog
    6
    Par d�faut
    Remod�lisez votre table sous forme intervallaire. D�s lors vous n'aurez plus de r�cursivit� � g�rer et le suppression d'un sous arbre se fera avec un simple DELETE....

    Voici l'article que j'ai �crit pour MS SQL Server avec toutes les requ�tes et les proc�dures :
    http://sqlpro.developpez.com/cours/arborescence/

    A +
    Fr�d�ric Brouard - SQLpro - ARCHITECTE DE DONN�ES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : mod�lisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 2
    Dernier message: 07/01/2010, 11h47
  2. SQL Server '05 : on delete cascade
    Par stringman62 dans le forum MS SQL Server
    R�ponses: 2
    Dernier message: 14/12/2007, 16h12
  3. [PL/SQL 9i] d�tecter un Delete Cascade
    Par Yorglaa dans le forum SQL
    R�ponses: 4
    Dernier message: 23/10/2007, 10h20
  4. [T-SQL]ON DELETE CASCADE..inconnu
    Par clasix dans le forum Sybase
    R�ponses: 2
    Dernier message: 04/09/2006, 20h16
  5. [SQL 2K5] Pb : ON DELETE CASCADE : r�f�rence circulaire
    Par n00bi dans le forum MS SQL Server
    R�ponses: 10
    Dernier message: 29/05/2006, 08h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo