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

Langage SQL Discussion :

Contrainte déferable DepAdm


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2014
    Messages : 80
    Points : 46
    Points
    46
    Par défaut Contrainte déferable DepAdm
    Bonjour à tous,

    j'ai un petit souci de compréhension si quelqu'un peut m'éclairer svp, merci d'avance.

    supposons que j'ai une table Departement avec comme attribut :

    Id -> id du département (clé primaire)
    Nom -> nom du département
    DepAdm -> id du département administrant le département (clé étrangère qui pointe vers id)


    pour pouvoir faire en sorte que Depadm puisse fonctionner,
    je dois déclarer la contrainte comme étant déferable c'est ca?

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 950
    Points : 5 849
    Points
    5 849
    Par défaut
    Non, il suffit de créer les lignes dans le bon ordre, à savoir l'administrant avant l'administré.

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2014
    Messages : 80
    Points : 46
    Points
    46
    Par défaut
    oui mais si je veux qu'un département puisse s'administrer lui même?

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 950
    Points : 5 849
    Points
    5 849
    Par défaut
    Je ne vois aucun problème à ça :
    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
    41
    42
    43
    44
    45
    SQL> drop table departement;
     
    Table supprimee.
     
    SQL> create table departement (
      Id number primary key,
      Nom varchar2(10) not null,
      DepAdm number references  departement(id)
    );  2    3    4    5
     
    Table creee.
     
    SQL> insert into departement values (1,'A',NULL);
     
    1 ligne creee.
     
    SQL> insert into departement values (2,'B',1);
     
    1 ligne creee.
     
    SQL> insert into departement values (3,'C',3);
     
    1 ligne creee.
     
    SQL> commit;
     
    Validation effectuee.
     
    SQL> insert into departement values (4,'D',7);
    insert into departement values (4,'D',7)
    *
    ERREUR a la ligne 1 :
    ORA-02291: violation de contrainte d'integrite (SKUATAMAD.SYS_C0073616) - cle parent
    introuvable
     
     
    SQL> select * from departement;
     
            ID NOM            DEPADM
    ---------- ---------- ----------
             1 A
             2 B                   1
             3 C                   3
     
    SQL>
    Quel est votre SGBD ?

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2014
    Messages : 80
    Points : 46
    Points
    46
    Par défaut
    excusez moi je me suis trompé ma question était plutôt : faire en sorte q'un département ne puisse pas s'administrer lui même :

  6. #6
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 950
    Points : 5 849
    Points
    5 849
    Par défaut
    Il suffit de rajouter une contrainte check sur DepAdm (DepAdm <> ID ) enfin si le SGBD n'est pas mysql...

Discussions similaires

  1. Desactiver temporairement les contraintes
    Par maitrebn dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 05/10/2006, 17h58
  2. [ contrainte ] supprimer une contrainte DB2
    Par hocinema dans le forum DB2
    Réponses: 4
    Dernier message: 08/01/2004, 15h01
  3. Les contraintes OCL
    Par bart64 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 19/12/2003, 18h47
  4. Suppression de la contrainte unique
    Par mika dans le forum SQL
    Réponses: 3
    Dernier message: 20/02/2003, 17h56
  5. [VB6] Affichage d'image avec qlq contraintes
    Par youri dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 21/11/2002, 14h44

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