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 :

check constraint et subquery


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Par défaut check constraint et subquery
    Bonjour,

    J'ai un prolème, assez banal il me semble mais qui me pose problème... Je dois mettre en place une contrainte check sur un champ mais cette contrainte nécessite d'aller voir si une autre valeur est dans une autre table. Je ne peux malheureusement pas utiliser de PK FK parce que l'autre table n'a pas de clause unique (elle ne peut pas en avoir sur cet attribut...).

    Alors la question, c'est : est-ce que je suis obligé de faire une fonction que j'apelle a chaque fois et qui me sort un ou 0 + un chek qui me fait un truc du genre : check( 0>FunctionDeCheck() ) ? OU est-ce que j'ai un moyen plus joli de tout mettre dans le check?

    merci d'avance...

  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
    Un trigger before de niveau ligne me semble plus approprié...

  3. #3
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 487
    Par défaut
    Citation Envoyé par LeoAnderson
    Un trigger before de niveau ligne me semble plus approprié...

    Je ne peut rien proposer de mieux, donc j'aurais tendance à dire oui.
    Maintenant, la gestion de concurence chez Oracle (et c'est son point fort) fait que les triggers ne peuvent être appropriés pour ce genre de choses. Dans bien des cas, ils peuvent provoquer des erreurs.

  4. #4
    Xo
    Xo est déconnecté
    Membre Expert
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Par défaut
    Salut,

    Citation Envoyé par mauroyb0
    cette contrainte nécessite d'aller voir si une autre valeur est dans une autre table.
    Cf the FAQ : Quelles sont les limitations d'une contrainte CHECK ?

    Une contrainte CHECK ne peut faire référence qu'aux colonnes de la ligne courante.
    Elle ne peut donc pas impliquer d'autres lignes de la table, ni impliquer d'autres tables.
    En particulier, on ne peut pas y utiliser un SELECT.
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

Discussions similaires

  1. [11gR2] Check constraint à mettre en place
    Par lcaya dans le forum SQL
    Réponses: 4
    Dernier message: 22/02/2013, 16h04
  2. Check constraint : NOT LIKE digits
    Par ospreyyy dans le forum DB2
    Réponses: 3
    Dernier message: 16/09/2011, 13h15
  3. Gérer les CHECKS CONSTRAINTS
    Par THOMAS Patrice dans le forum HyperFileSQL
    Réponses: 2
    Dernier message: 24/08/2010, 13h25
  4. [9i][Check constraint] Problème d'update
    Par natha dans le forum Oracle
    Réponses: 5
    Dernier message: 14/01/2007, 21h02
  5. Distinguer les CHECK CONSTRAINTS des NOT NULL
    Par Wurlitzer dans le forum Oracle
    Réponses: 16
    Dernier message: 28/09/2006, 11h50

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