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

Oracle Discussion :

[ORACLE8] probleme contrainte sur plusiers tables


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif Avatar de yostane
    Homme Profil pro
    test
    Inscrit en
    Mars 2006
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : test

    Informations forums :
    Inscription : Mars 2006
    Messages : 84
    Par défaut [ORACLE8] probleme contrainte sur plusiers tables
    Je veux créer une table ainsi :

    create table etud_mod (
    matricule char(9),
    cod_mod char(6),
    an_sco char (9),
    note1 number(4,2) DEFAULT 0,
    note2 number(4,2) DEFAULT 0,
    note_syn number(4,2) ,
    note_rat number(4,2),
    note_tp number(4,2),
    constraint mat_cod_pk primary key(matricule,cod_mod,an_sco),
    foreign key (matricule,an_sco) references etud_sect(matricule,an_sco),
    foreign key (cod_mod) references fil_mod(cod_mod),
    constraint not_min_max check
    (
    note1 between 0 and 20 AND
    note2 between 0 and 20 AND
    note_rat between 0 and 20 AND
    note_tp between 0 and 20 AND
    (
    note_syn is NULL OR
    (10 > GREATEST((note1+note2+note_tp)/3 , (note_syn+note_tp)/2)
    AND
    cod_mod in (select cod_mod from module where atp = 'o')
    ) OR
    (10 > GREATEST( (note1+note2)/2 , note_syn )
    AND
    cod_mod in (select cod_mod from module where atp = 'n')

    )
    )
    ),
    );
    Un message d'erreur s'affiche me disant

    cod_mod in (select cod_mod from module where atp = 'o')
    *
    ERREUR à la ligne 23:
    ORA-02251: sous-interrogation non autorisée ici
    y a t'il un moyen sous ORACLE8 d'introduire cette contrainte en rouge

  2. #2
    Membre Expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Par défaut
    La vérification doit se faire par trigger.
    Une contrainte doti se suffire à elle-même, c'est à dire qu'elle ne doit dépendre de rien d'autre (par exemple, on ne peut pas faire de contraintes avec SYSDATE) puisque la vérification de la contrainte dépend de quelque chose d'externe (le temps, la date, des données d'autres tables, ..)

  3. #3
    Membre actif Avatar de yostane
    Homme Profil pro
    test
    Inscrit en
    Mars 2006
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : test

    Informations forums :
    Inscription : Mars 2006
    Messages : 84
    Par défaut
    Et comment le faire avec un trigger?
    en plus j'ai entendu dire qu'ils sont déconseillés

  4. #4
    Membre Expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Par défaut
    Citation Envoyé par yostane
    Et comment le faire avec un trigger?
    ça, je vous laisse chercher, nous ne sommes pas là pour faire vos devoirs à votre place !
    Une recherche sur le mot-clé trigger ainsi que la consultation du guide PL/SQL vous permettra de vous en sortir !

    Citation Envoyé par yostane
    en plus j'ai entendu dire qu'ils sont déconseillés
    Non, bien gérés et à bon escient, ils ne sont pas déconseillés....

  5. #5
    Membre actif Avatar de yostane
    Homme Profil pro
    test
    Inscrit en
    Mars 2006
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : test

    Informations forums :
    Inscription : Mars 2006
    Messages : 84
    Par défaut
    Merci beacoup , et vous avez raison , je vais ma casser un peu la tête

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

Discussions similaires

  1. Contrainte sur une table reflexive
    Par MartinezGarcia dans le forum Requêtes
    Réponses: 7
    Dernier message: 12/11/2010, 14h03
  2. [MySQL] Contraintes sur les tables
    Par oranocha dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 01/02/2009, 17h55
  3. Quel ordre utiliser pour les contraintes sur les tables ?
    Par Icewall dans le forum Langage SQL
    Réponses: 14
    Dernier message: 20/04/2008, 19h52
  4. probleme update sur 2 tables
    Par alex68 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 23/06/2007, 19h54
  5. Modifier une contrainte sur une table InnoDb
    Par DomZZZ dans le forum Outils
    Réponses: 1
    Dernier message: 13/03/2006, 14h40

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