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 :

Creation de table et contrainte


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Creation de table et contrainte
    Bonjour,

    J'essaye de définir une contrainte lors de la création d'une table mais je bloque

    Contexte : une BD de gestion d'un vidéo club, tables : ABONNE, CATALOGUE, EMPRUNTS.

    CATALOGUE(Code, Titre, Réalisateur, Pays, Genre)

    La contrainte que je dois définir est : pour les films français le réalisateur ne peut être NULL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Create table CATALOGUE
    (
    Code char (10),
    Titre char (30),
    Realisateur char (20) check (where Pays = France, Realisateur not Null),
    Pays char (20) ,
    Genre enum ('Drame', 'Comedie', 'Thriller'),
    );
    Est ce correct ??

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Je crois qu'il faut que vous passiez par un trigger pour ce genre de contraintes.

  3. #3
    Candidat au Club
    Inscrit en
    Octobre 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Trigger je ne sais pas, mais il me semble qu'avec une contrainte du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Constraint Realisateur_F 
    check (
    Select Pays, Realisateur
    Where pays = 'France'
    Realisateur = Not Null )
    Cela devrai être proche, mais je débute alors je ne sais pas si je suis dans la bonne voie


    Ps : Merci Cthulus pour les balises 'Code'

  4. #4
    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
    Avec Oracle 11g j'ai pu m'en sortir avec une colonne virtuelle :

    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
    create table catalogue
    (
        Code        varchar2(10),
        Titre       varchar2(30),
        Realisateur varchar2(20),
        Pays        varchar2(20),
        Real_FR as (case Pays when 'France' then Realisateur else '.' end) NOT NULL
    );
     
    insert into catalogue (code, titre, realisateur, pays) values ('1', 'A', 'Waldar', 'France'    );
    insert into catalogue (code, titre, realisateur, pays) values ('2', 'B', '+Pat+' , 'Angleterre');
    insert into catalogue (code, titre, realisateur, pays) values ('3', 'C', null    , 'Angleterre');
     
    commit;
     
    select * from catalogue;
     
    CODE	TITRE	REALISATEUR	PAYS		REAL_FR
    ------- ------- --------------- --------------- ----------
    1	A	Waldar		France		Waldar              
    2	B	+Pat+		Angleterre	.
    3	C			Angleterre	.
     
    insert into catalogue (code, titre, realisateur, pays) values ('4', 'D', null, 'France');
     
    ORA-01400: impossible d insérer NULL dans ("CATALOGUE"."REAL_FR")

  5. #5
    Candidat au Club
    Inscrit en
    Octobre 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Merci Waldar, ta réponse me confirme que c'est pas si simple a faire (du moins a mon niveau)

Discussions similaires

  1. creation de table avec des contraintes
    Par aldama dans le forum SQL
    Réponses: 4
    Dernier message: 01/04/2008, 19h58
  2. creation de table avec contrainte
    Par jonathan1 dans le forum SQL
    Réponses: 4
    Dernier message: 29/08/2007, 15h28
  3. Creation d'une table avec contrainte
    Par bygui dans le forum Administration
    Réponses: 2
    Dernier message: 31/05/2006, 09h36
  4. Creation de table multi base
    Par baboune dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 20/02/2004, 09h23
  5. Creation de table, caractère non reconnu
    Par Missvan dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 17/02/2004, 13h28

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