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 :

[SQL2K] probléme de suppression en cascade


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2009
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 53
    Par défaut [SQL2K] probléme de suppression en cascade
    Bonjour a tous,

    voila mon problème, j'ai 3 table , projet , mission, horaire, un projet contiens plusieur mission , et pour chaque mission il y a des horaire, il y a aussi d autre table mais elle n'ont pas d'influence ici
    Voila les tables

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    create table PROJET
      (
         NUM_PROJ numeric(3)  not null  ,
         NOM_PROJ varchar(32)  null  ,
         DATE_DEBU_PROJ datetime  null  ,
         DATE_FIN_PROJ datetime  null  ,
         PRIX_PROJ real  null  
         ,
         constraint PK_PROJET primary key (NUM_PROJ)
      )
     
    create table MISSION
      (
         NUM_PROJ numeric(3)  not null  ,
         NUM_MISS numeric(3)  not null  ,
         NUM_SPE numeric(3)  not null  ,
         NUM_INTER numeric(3)  not null  ,
         NOM_MISS varchar(32)  null  ,
         DESCRIPTION_MISS varchar(255)  null  ,
         NH_HEUR_PREV_MISS numeric(3)  null  ,
         DATE_DEBUT_MISS datetime  null  ,
         DATE_FIN_MISS datetime  null  ,
         ETAT_MISS varchar(32)  null  
         ,
         constraint PK_MISSION primary key (NUM_PROJ, NUM_MISS),
         constraint FK_MISSION_PROJET foreign key (NUM_PROJ) 
                   references PROJET (NUM_PROJ)
      )
     
    create table HORAIRE
      (
         NUM_PROJ numeric(3)  not null  ,
         NUM_MISS numeric(3)  not null  ,
         DATE_HOR datetime  not null  ,
         NB_HEUR_HOR numeric(3)  null  
         ,
         constraint PK_HORAIRE primary key (NUM_PROJ, NUM_MISS, DATE_HOR),
         constraint FK_HORAIRE_MISSION foreign key (NUM_PROJ, NUM_MISS) 
                   references MISSION (NUM_PROJ, NUM_MISS)
    )

    j'ai crée un premier trigger qui avant la suppression d'une mission va supprimer tout les horaires de cette mission puis me supprime la mission ( il marche sans problème )
    Puis j'ai créé un deuxième trigger qui avant la suppression du projet va me supprimer toutes ses missions et donc le 1er trigger se déclanche et me supprime les horraire,

    Bref c'est ici que sa coince sql server me dit :

    Serveur : Msg 547, Niveau 16, État 1, Procédure TRGI_supp_proj, Ligne 23
    Conflit entre l'instruction DELETE et la contrainte COLUMN REFERENCE 'FK_MISSION_PROJET'. Le conflit est survenu dans la base de données 'Gestion projet', table 'MISSION', column 'NUM_PROJ'.
    L'instruction a été arrêtée.
    je comprend très bien l erreur mais se que je comprend pas c'est pourquoi sa me dit cette erreur et comment la résoudre ??

    bref si quelqu'un comprend pourquoi je suis la ^^

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Donnez le code de vos triggers, et un jeu d'essai simple pour ces trois tables.
    Sans cela nous ne pouvons pas vous aider.

    @++

  3. #3
    Membre averti
    Inscrit en
    Février 2009
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 53
    Par défaut
    ok

    alor voila un jeux d enregistrement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    --table projet 
    insert into projet
    values (1,'proj01',2009-02-11 18:59:07.513 ,  2009-03-11 18:59:07.513, 1800)
     
    --table mission
    insert into mission
    values( 1,1,1,0,'mis01','analyse',11,'2009-02-11 17:18:19.353','2009-02-14 17:18:19.353','en cour')
    values( 1,2,3,0,'mis02','SQL',9,'2009-02-11 17:18:19.353','2009-02-12 17:18:19.353','en cour')
     
    --table horraire
    insert into horaire
    values(1,1,'2009-02-11 17:18:19.353',4)
    values(1,1,'2009-02-12 17:18:19.353',5)
    values(1,1,'2009-02-13 17:18:19.353',2)
    values(1,2,'2009-02-11 17:18:19.353',3)
    values(1,1,'2009-02-12 17:18:19.353',6)
    et voila le 1er trigger : ( lui sa marche )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    create trigger TRGI_supp_miss
    on mission
    instead of delete
    as
    declare
    	@numproj numeric(3),
    	@nummiss numeric(3)
    begin
    	select @numproj = num_proj, @nummiss = num_miss from deleted;
     
    	delete from horaire
    	where num_proj = @numproj and num_miss = @nummiss;
     
            delete from mission
    	where num_proj = @numproj and num_miss = @nummiss ;
     
    end
    le 2em trigger
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    create trigger TRGI_supp_proj
    on projet
    instead of delete
    as
    declare
    	@numproj numeric(3)
    begin
    	select @numproj = num_proj from deleted;
     
    	delete from mission
    	where num_proj = @numproj ;
     
            delete from projet
            where num_proj = @numproj ;
    end
    voila

    normalement le 2em trigger devrai appeler le 1er et ça ne devrais pas posée de problème
    mais sa ne veut pas

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    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 : 21 998
    Billets dans le blog
    6
    Par défaut
    Toute dépend de votre paramétrage et en particulier si netsed trigger est à true.

    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/ * * * * *

  5. #5
    Membre averti
    Inscrit en
    Février 2009
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 53
    Par défaut
    merci de ta raiponce mais où es ce que je peut voir mes paramétrage et en particulier netsed trigger ??

  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
    21 998
    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 : 21 998
    Billets dans le blog
    6
    Par défaut
    sp_configure
    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: 0
    Dernier message: 13/04/2010, 21h10
  2. Problème de suppression en cascade.
    Par Orgied dans le forum Débuter
    Réponses: 4
    Dernier message: 28/01/2009, 14h44
  3. Problème avec suppression en cascade
    Par agur29 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 26/07/2007, 11h42
  4. Problème de suppressions en cascade redondantes
    Par [DreaMs] dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 20/07/2007, 15h03
  5. Réponses: 4
    Dernier message: 16/04/2004, 08h20

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