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 :

contrainte de type logique sur un champ


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 5
    Points : 3
    Points
    3
    Par défaut contrainte de type logique sur un champ
    Bonjour,

    Je souhaite créer une table dans laquelle la valeur d'un champ va dépendre
    de deux autres.

    Précisément j'ai les trois champs suivants :

    statut
    close_date
    delivery_date

    la logique est la suivante :

    si(statut="delivered") alors

    delivery_date=close_date
    sinon

    delivery_date=NULL
    fin si



    Est il possible au moment de la création de ma table d'utiliser une contrainte sur le champs "delivery_date" résumant l'algo ci dessus ?

    Merci d'avance pour vos réponses...

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    Procéder de la sorte entrainerait une redondance de données entre la colonne résultat et les colonnes qui fourniront le résultat.

    Utilisez une vue qui effectue ce travail pour éviter de stocker cette redondance.

  3. #3
    Candidat au Club
    Inscrit en
    Novembre 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Merci de ta réponse,

    mais je ne comprends pas bien

    si la redondance dont tu parles correspond au fait que les champs close_date et delivery_date auront la même valeur dans le cas ou le staut="delivered"
    ce n'est pas un problème. Il s'agit de la table de fait d'un entrepôt.

    J'ai besoin de créer ma table de cette manière sans utiliser de vue.

    Ce que j'aimerais connaître c la syntaxe sql permettant
    de créer une contrainte ou une procédure stocké pour obtenir ce résultat.

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    Non quand je parle de redondance, c'est pour indiquer le fait que la valeur d'une donnée soit calculable à partir d'autres données.

    Imaginons une table :

    Et maintenant tu me dis, je voudrais avoir une colonne C qui soit A+B. Alors moi je te dis que la colonne C n'a pas lieu d'être et qu'il suffit d'une vue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CREATE OR REPLACE VIEW V_TABLE_SOMME AS 
    SELECT ID, A, B, A+B AS C 
    FROM T_TABLE
    Ainsi quand tu veux ta colonne C, tu fais simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CREATE OR REPLACE VIEW V_TABLE_SOMME AS 
    SELECT ID, A, B, C
    FROM V_TABLE_SOMME
    C n'est pas stocké mais recalculé à chaque fois.

  5. #5
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par vmolines Voir le message
    Non quand je parle de redondance, c'est pour indiquer le fait que la valeur d'une donnée soit calculable à partir d'autres données.
    J'interprete sa demande totalement différement : je pense qu'il ajoute une table qui n'existait pas à sa base et sa requête vise à initialiser cette table; par la suite cette table va voir son champs date_delivery alimenté physiquement. Enfin c'est ce que je comprends.

  6. #6
    Candidat au Club
    Inscrit en
    Novembre 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    ok merci je v faire comme ça

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2003] Créer une contrainte d'unicité basé sur deux champs(hors clé primaire)
    Par adelcrb dans le forum Modélisation
    Réponses: 1
    Dernier message: 31/08/2013, 21h06
  2. Réponses: 5
    Dernier message: 17/07/2008, 11h40
  3. Réponses: 2
    Dernier message: 02/04/2008, 19h05
  4. Type mismatch sur un champs MEDIUMTEXT
    Par yamino dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 09/03/2007, 14h19
  5. [access] champs type text sur un pc blob sur un autre
    Par Harry dans le forum Bases de données
    Réponses: 3
    Dernier message: 27/07/2004, 09h30

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