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

  1. #1
    Membre régulier

    Inscrit en
    octobre 2003
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : octobre 2003
    Messages : 142
    Points : 106
    Points
    106

    Par défaut Contrainte référentielle conditionelle

    Bonjour.

    Voici mes tables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    t_equipement ( id_equipement, id_type_equipement)
    t_site (id_site, libelle)
    t_site_equip(ref_equi, ref_site)
    Je voudrais insérer dans t_site_equip des équipements qui existent dans t_equipement bien sûr, mais sous condition que id_type_equipement ait une valeur donnée.
    j'ai le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    create table T_SITE_EQUIPEMENT (
      ref_equipement number (10) 
        constraint ref_equi_nonull not null 
        constraint ref_equip_uniq unique 
        constraint ref_equip_exist references t_equipement (id_equipement),
      ref_site number (10) 
        constraint ref_sit_nonull not null 
        constraint ref_site_exist references t_site(id_site)
    )
    mais je ne vois pas comment vérifier la valeur de id_type_equipement
    j'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...
    constraint ref_equip_typ check (t_equipement.id_type_equipement=1)
    ...
    mais j'obtiens en retour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORA-02438: Column check constraint cannot reference other columns
    Ce que je recherche est-il réalisable par les contraintes ou dois-je vérifier cette intégrité par du code ou par trigger au moment de l'insertion?

    Merci d'avance de vos lumières.

  2. #2
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    juillet 2003
    Messages
    4 191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : juillet 2003
    Messages : 4 191
    Points : 6 701
    Points
    6 701
    Billets dans le blog
    3

    Par défaut

    Impossible à faire par contrainte référentielle.

    Il faut que tu le gères par trigger (insert/update)
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB

  3. #3
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    octobre 2007
    Messages
    5 592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : octobre 2007
    Messages : 5 592
    Points : 11 494
    Points
    11 494

    Par défaut

    Prenez un peu de temps pour lire SQL Assertions / Declarative multi-row constraints et éventuellement voter pour leur implémentation.

  4. #4
    Membre régulier

    Inscrit en
    octobre 2003
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : octobre 2003
    Messages : 142
    Points : 106
    Points
    106

    Par défaut

    Merci pour vos réponse.

    en attendant la mise en oeuvre de "declarative muti-row constraints" (merci mnitu), je vais faire avec des triggers.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 27/10/2010, 17h22
  2. Problème contrainte référentielle
    Par dlgdev dans le forum Installation
    Réponses: 3
    Dernier message: 20/05/2010, 11h39
  3. Propriété d'un JOIN avec une contrainte référentielle
    Par ez3kiel dans le forum Langage SQL
    Réponses: 1
    Dernier message: 05/06/2009, 10h07
  4. Contrainte référentielle à mettre en évidence
    Par DEV-10 dans le forum Modélisation
    Réponses: 14
    Dernier message: 22/01/2008, 16h04
  5. modification d'une contrainte référentielle
    Par je®ome dans le forum Langage SQL
    Réponses: 1
    Dernier message: 17/05/2006, 21h11

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