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

SQL Oracle Discussion :

contrainte pour table


Sujet :

SQL Oracle

  1. #1
    Membre habitué
    Inscrit en
    Octobre 2006
    Messages
    446
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 446
    Points : 128
    Points
    128
    Par défaut contrainte pour table
    bonjour ,
    j'ai une table T1 (A1,B1,C1) , T2 (A2,B2,C2) , T3(A1,A2,C3)
    A1 , A2 , (A1,A2) sont les clés
    j'ai voulu ajouter une contrainte sur la table T3 pour vérifier si le A1 existe dans T1 et A2 existe dans T2 mais je ne sais pourquoi ça ne marche pas .
    veuillez m'aider parceque quand je l'ai essayé il me fait erreur " sous-interrogation non autorisée ici"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE "C" 
    (
    "A1" Integer , 
    "A2" Integer , 
    "C3" INteger 
     
    CONSTRAINT "pk_a" PRIMARY KEY ("A1","A2") ENABLE , 
    CONSTRAINT "ck_A1" CHECK ("A1" IN (SELECT A1 from T1) ) 
    CONSTRAINT "ck_A2" CHECK ("A2" IN (SELECT A2 from T2) ) 
    )
    merci

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Parce que vous avez tout faux !
    Pour vérifier si une donnée existe dans une autre table, il faut passer par une clef étrangère. Pour avoir une clef étrangère, il faut une clef primaire ou unique en face, ce qui est bien le cas dans vos tables T1 et T2.

    Côté script, cela donne :
    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
    CREATE TABLE C
    (
        A1 Integer NOT NULL   ,
        A2 Integer NOT NULL   ,
        C3 Integer            ,
        CONSTRAINT PK_C
          PRIMARY KEY (A1, A2)
          USING INDEX         , 
        CONSTRAINT FK_C_T1
          FOREIGN KEY (A1)
          REFERENCES T1 (A1)  ,
        CONSTRAINT FK_C_T2
          FOREIGN KEY (A2)
          REFERENCES T2 (A2)
    );
    Je vous encourage également à ne pas utiliser les double-quotes pour nommer vos objets : cela les rend sensibles à la casse et toutes les requêtes par la suite devront être écrite selon cette règle.

  3. #3
    Membre éprouvé Avatar de star
    Homme Profil pro
    .
    Inscrit en
    Février 2004
    Messages
    837
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Corée Du Nord

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 837
    Points : 975
    Points
    975
    Par défaut
    Les requêtes sont intedites dans une contrainte CHECK.
    Il est possible d'avoir une clé étrangère sur une table sans pour autant nécessité de clé primaire sur la table de référence.
    Les triggers de table peuvent aussi aider à établir des contraintes plus complexes.

    .
    Diviser c'est régner : United we stand, Divided we fall
    .

  4. #4
    Membre habitué
    Inscrit en
    Octobre 2006
    Messages
    446
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 446
    Points : 128
    Points
    128
    Par défaut
    merci pour l'aide

Discussions similaires

  1. Contrainte pour String et Code postal
    Par hola150 dans le forum Oracle
    Réponses: 8
    Dernier message: 10/04/2007, 09h54
  2. Chemin relatif pour tables liées
    Par kiki_b dans le forum Access
    Réponses: 8
    Dernier message: 15/06/2006, 18h17
  3. definir chemin pour table liée
    Par branqueira dans le forum Access
    Réponses: 4
    Dernier message: 22/10/2005, 13h44
  4. Créer une contraintes pour une suppression
    Par subzero82 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 04/10/2005, 17h36
  5. contrainte pour un numéro de telephone
    Par berg dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 25/01/2005, 20h48

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