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

PostgreSQL Discussion :

contraintes check


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1
    Par défaut contraintes check
    je viens de commencer en postgre et j'ai un probleme avec des contraintes check sur la base de donnee que je veux cree

    suit un exemple de requetes qui semble poser probleme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ALTER TABLE Assuré ADD CONSTRAINT
         CHECK(exists(SELECT * FROM Attacher
                      WHERE Attacher.ID_Assuré=Assuré.ID_Assuré));
    la structure des deux tables sont les suivantes:
    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
    CREATE TABLE "Assuré" (
        "ID_Assuré" varchar(15) not null,
        "Nom" varchar(30) not null,
        "Prenom" varchar(25) ,
        "adr.rue" varchar(30) ,
        "adr.num" integer ,
        "adr.boite" integer ,
        "adr.CP" integer not null,
        "adr.localite" varchar(20) not null,
        "adr.pays" varchar(15) not null,
        "langue" varchar(10) not null,
        "appelation" varchar(4) ,
        "sexe" char(1) ,
        "n°telephone" numeric(15) not null,
        "n°fax" numeric(15) ,
        "n°gsm" numeric(15) ,
        "date de naissance" date not null,
        "etat civil" varchar(15) ,
        "profession" varchar(25) ,
        "nationalite" varchar(25) ,
        "remarque" varchar(40) ,
        "ID_Conducteur" integer ,
         Primary Key ("ID_Assuré"),
         UNIQUE ("ID_Conducteur"));
     
    CREATE TABLE "Attacher" (
         "ID_Assuré" varchar(15) not null,
         "ID_Client" varchar(15) not null,
         "relation" varchar(20) ,
         Primary Key ("ID_Assuré", "ID_Client"));
    apparament il ya un probleme de syntax puisqu'il c'est le parser qui me renvoie une erreur mais je n'arrive pas a mettre le nez dessus

    merci d'avance pour votre reponse

  2. #2
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Par défaut
    A ma connaissance, une contrainte check n'opère que dans la table dans la quelle elle est concernée.

    Pour ton cas, il s'agit soit d'ajouter une clé étrangère soit de créer un trigger pour assurer ce check.

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 176
    Par défaut
    vu dans la doc de postgresql :
    Currently, CHECK expressions cannot contain subqueries nor refer to variables other than columns of the current row.

  4. #4
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Par défaut
    Tu peux faire simple en utilisant la constraint foreign key :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ALTER TABLE Assuré ADD 
    CONSTRAINT  FK_ASS_ATT FOREIGN KEY (ID_Assuré)
    REFERENCE Assuré(ID_Assuré);
    Et vous avez exactement ce que vous voulez faire avec votre check.

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  5. #5
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Par défaut
    Citation Envoyé par WOLO Laurent Voir le message
    Tu peux faire simple en utilisant la constraint foreign key :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ALTER TABLE Assuré ADD 
    CONSTRAINT  FK_ASS_ATT FOREIGN KEY (ID_Assuré)
    REFERENCE Assuré(ID_Assuré);
    Et vous avez exactement ce que vous voulez faire avec votre check.
    Bonsoir Laurent,

    Tu voulais dire ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    REFERENCES Attacher(ID_Assuré);

Discussions similaires

  1. contraint CHECK avec lecture de données sur une autre table ?
    Par mamiberkof dans le forum Langage SQL
    Réponses: 1
    Dernier message: 22/05/2006, 09h14
  2. [SQL Server 2000] Contrainte check
    Par batosai dans le forum Langage SQL
    Réponses: 3
    Dernier message: 24/04/2006, 16h16
  3. Contrainte CHECK Conditionnelle...
    Par Moskito dans le forum Langage SQL
    Réponses: 3
    Dernier message: 26/02/2006, 23h09
  4. Modification d'une contrainte Check
    Par linou dans le forum Oracle
    Réponses: 7
    Dernier message: 03/10/2005, 11h25
  5. [Debutant] Contrainte CHECK
    Par TeQ dans le forum Langage SQL
    Réponses: 2
    Dernier message: 16/01/2004, 11h18

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