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

MS SQL Server Discussion :

Probleme tester un autre champs dans la meme table


Sujet :

MS SQL Server

  1. #1
    Membre du Club
    Inscrit en
    Mai 2013
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 128
    Points : 56
    Points
    56
    Par défaut Probleme tester un autre champs dans la meme table
    Bonjour tout le monde

    je voudrais tester un autre champs de la meme table je vais vous donner un exemple :

    par exemple j'ai cette table :


    num_Module nvarchar(50) ,
    Nom_Module nvarchar(50),

    preA1S1 bigint null, -- nbrheurmodule
    preA2S2 bigint null,
    deuA2S1 bigint null,
    deuxA2S2 bigint null,
    EFM_Realiser bit,
    Date_debutmodule datetime,
    Date_Finmodule datetime,
    MH_theorique bigint,
    Mh_Pratique bigint,
    Niveau_deMaitrise nvarchar(50),
    Salle_cours nvarchar(50),
    atelier nvarchar(50)

    je voudrais tester si par exemple nous avons la masse horaire theorique (MH_theorique ) est rempli ( not null) et quand je saisie dans le champs Atelier
    un message s'affiche que je dois remplire le champs salle de cour(Salle_cours) et non pas le champ atelier car la masse horaire n'est pas null et la meme chose dans le cas contraire est ce que je doi utuliser un trigger et tester dans la table inserted quesque je dois utiliser instead of ou on insert ?je suis un peu embrouillé avec ca

    Merci pour votre aide d'avance

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Vous n'avez pas besoin de trigger, vous pouvez simplement poser des contraintes sur la table.

    Cependant je pense que vous avez plusieurs problèmes de modélisation :
    - Salle_cours et Atelier devraient plutôt être des clef étrangères.
    - Vous êtes me semble-t-il dans un cas d'héritage et devriez l’implémenter en tant que tel, vous n'auriez alors plus ce problème de contrainte à poser.

  3. #3
    Membre du Club
    Inscrit en
    Mai 2013
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 128
    Points : 56
    Points
    56
    Par défaut
    vous voulez que je met un seul champs salle au lieu de faire atelier et salle de cours non c'est pas ca il faut obligatoirement avoir ces deux champs dans le cas de MH_theorique = 0 le champs salle de cours doit etre egal a 0
    dans le cas de Mh_Pratique = 0 le champs salle de pratique ou atelier doit etre egal a 0

    bien sur dans le cas de contraire ca sera le contraire

    et le cas ou MH_theorique <>0 et Mh_Pratique <> 0 les deux salles doivent etre non null

    est ce que c'est dur de le faire ?

    je sais pas les contraintes dont vous parlez si on fait check c'est qu'on doit tester seulement le champs meme et non pas un autre champs c'est pourquoi j'ai pensé a faire un trigger

    je vais eclaircir un peu ma question c'est comment créer une contrainte qui permet de tester un autre champs si il est valide voilà

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Non, je suggérais que vous créassiez deux tables, COURS_THEORIQUE et COURS_PRATIQUE pour y placer respectivement les colonnes Masse_horaire et Salle ou Atelier. Ce deux tables hériterait de la table principale.

    Pour votre contrainte sur plusieurs colonnes, c'est en effet possible :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ALTER TABLE LaTable ADD
    	 CONSTRAINT CHK_Theorique CHECK (MH_theorique IS NULL OR Salle_cours IS NOT NULL)
    	,CONSTRAINT CHK_Pratique CHECK(MH_Pratique IS NULL OR atelier IS NOT NULL)

Discussions similaires

  1. duplique données d'un champs dans un autre champs de la meme table
    Par alexkickstand dans le forum Langage SQL
    Réponses: 2
    Dernier message: 18/05/2007, 23h01
  2. Probleme pour lire et ecrire dans un meme flux
    Par kururin dans le forum C#
    Réponses: 1
    Dernier message: 18/05/2007, 18h50
  3. [MySQL] Probleme insertion d un champ dans ma base !
    Par dekovince dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 04/04/2007, 15h08
  4. Donnee De 2 Champs Dans Le Meme
    Par zoreille6 dans le forum Access
    Réponses: 4
    Dernier message: 08/03/2007, 16h01
  5. COMMENT METTRE 2 CHAMPS DANS LE MEME DBLOOKUPCOMBOBOX
    Par ledevelopeur dans le forum Bases de données
    Réponses: 2
    Dernier message: 27/07/2004, 15h15

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