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 :

violation de contrainte check


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    988
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 988
    Par défaut violation de contrainte check
    Bonjour,

    J'ai crée une table TITLE_COPY avec la syntaxe suivante, après , bien entendu avoir crée la table TITLE

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    CREATE TABLE TITLE_COPY (copy_id NUMBER(10),
    			title_id NUMBER(10)
    			CONSTRAINT title_copy_title_id_fk REFERENCES title(title_id),
    			STATUS VARCHAR2(15)
    			CONSTRAINT title_copy_status_nn NOT NULL
    		CONSTRAINT title_copy_status_ck CHECK(status IN('AVAILABLE','DESTROYED','RENTED','RESERVED')),
    			CONSTRAINT title_copy_copy_title_id_pk PRIMARY KEY(copy_id));
    La table title_copy présente une contrainte check qui force les valeurs saisies pour le champ STATUS à être comprises dans l'ensemble de valeurs suivantes

    'AVAILABLE','DESTROYED','RENTED','RESERVED'.

    Juste après, je saisis les requêtes suivantes dans la table title_copy

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    INSERT INTO TITLE_COPY(copy_id,title_id,status)VALUES(301,101,'AVAILABLE');
     
    INSERT INTO TITLE_COPY(copy_id,title_id,status)VALUES(302,102,'RESERVED');
    Et je reçois le message d'erreursuivant :

    ERREUR à la ligne 1 :
    ORA-02290: violation de contraintes (SYSTEM.TITLE_COPY_STATUS_CK) de
    vérification

    qui, si j'ai bien compris m'indique qu'il y a une erreur de non respect de la contrainte check.
    Pourquoi cette erreur alors que les valeurs saisies sont bien comprises dans l'ensemble de valeurs indiqué.

    Merci beaucoup de votre réponse.

    Cordialement.

    Nathalie

  2. #2
    Expert confirmé
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 822
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    D'après ces infos, ça devrait marcher. Il n'y a pas de trigger qui pourrait changer les valeurs ?
    Je que je ferais pour essayer de comprendre, c'est désactiver la contrainte, faire l'insert et vérifier le valeurs dans la table.
    Cordialement,
    Franck.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    988
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 988
    Par défaut desactivation contrainte check
    Bonsoir,

    C'est exactement ce que j'ai fait et l'insertion s'est très bien déroulée.
    Je ne comprends pas pourquoi il bloquait lors de l'insertion car les valeurs insérées sont bien celles de la liste de valeurs énoncées lors de la création de la contrainte check.

    Si quelqu'un a la solution...ce serait super de sa part de nous en dire un mot.

    Cordialement.

    Nathalie

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 953
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 953
    Par défaut
    Quelle est ta version d'oracle?
    Moi je n'ai pas rencontré de problème, par contre quand je viole la contrainte c'est mon nom de schéma qui apparait et pas system.
    Si tu travailles avec system c'est une très mauvaise idée, il faut créer un user spécifique.

  5. #5
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Peut-être un problème sur le nom de champ "STATUS" qui serait confondu avec un mot clé.

  6. #6
    Expert confirmé
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 822
    Billets dans le blog
    1
    Par défaut
    Et quand tu as fait l'insert sans la contrainte, Est-ce que tu vois les enregistrements avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select count(*) from TITLE_COPY where STATUS NOT IN('AVAILABLE','DESTROYED','RENTED','RESERVED')

Discussions similaires

  1. contraintes check
    Par djeman dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 10/01/2009, 18h33
  2. [Oracle] Script création Table, violation de contraintes
    Par boudou dans le forum Langage SQL
    Réponses: 2
    Dernier message: 21/02/2006, 13h47
  3. Réponses: 2
    Dernier message: 13/02/2006, 11h13
  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