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 :

Exercice sqlserver avec T-SQL


Sujet :

MS SQL Server

  1. #1
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 43
    Points : 30
    Points
    30
    Par défaut Exercice sqlserver avec T-SQL
    Bonjour tout le monde je suis nouveau sur SQL SERVER et j'ai un exercice sur l'application du langage T-SQL. Au fait il s'agit de 2 table :

    -----------------------------------------------------------------------------
    Logement : Numlogmt, typelogmt, valeur, cout, statut, nbrpiece
    Contrat : Numcontrat, datesignature, datedebut, datefin,caution, Numlogement
    -----------------------------------------------------------------------------
    La liste des requêtes est la suivante :

    R1 :Typelogmt ne peut prendre que les valeurs suivantes :suite, villa, appartement, bureau, studio.

    R2 : Statut logement est soit libre soit occupé.

    R3 : Statut logement doit être mis automatiquement à occupé dés qu'on signe un contrat pour ce logement.

    R4 : On ne peut pas signer un contrat de moins de 3mois.

    Ainsi pour les requêtes suivantes voila ce que j'ai fait :

    --------------------------------------------------------------------
    R1 :

    ALTER TABLE Logement
    ADD CONSTRAINT cst_Typelogmt
    CHECK(Typelogmt IN('Suite','Villa','Appartement','Chambre','Studio','Bureau'))

    ------------------------------------------------------------------------
    R2:

    ALTER TABLE Logement
    ADD CONSTRAINT cst_statut
    CHECK(statut IN('Occupé','Libre'))

    --------------------------------------------------------------------
    R3 :

    CREATE TRIGGER statloglibre
    ON Contrat AFTER DELETE
    AS
    UPDATE Logement SET statut = 'Libre'
    FROM Logement AS a
    JOIN deleted AS b ON (a.Numlogmt = b.Caution)

    ---------------------------------------------------------------------

    Voila c'est ce que j'ai fait et je coince au niveau de la requête 4. Et pour la requête 3 aussi je crois que quelque chose qui cloche mais je sais pas à quel niveau car c'est ma premiére fois que j'utilise les Triggers.
    Merci de votre compréhension

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Bonjour tout le monde je suis nouveau sur SQL SERVER
    Bienvenue

    Merci de votre compréhension
    On est sur un forum, y'a pas de note à la fin, pas de stress

    Pour la requête 3, vous vous êtes trompé sur la clé liant les deux tables, c'est visiblement le n° de logement; ce qui donnerait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TRIGGER TR_A_D_Contrat
    	ON dbo.Contrat
    AFTER DELETE
    AS
    BEGIN
    	UPDATE dbo.Logement
    	SET statut = 'Libre'
    	FROM dbo.Logement AS L
    	JOIN DELETED AS C ON L.Numlogmt = C.Numlogement
    END
    Mais pour répondre à la question, vous deviez écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TRIGGER TR_A_I_Contrat
    	ON dbo.Contrat
    AFTER INSERT
    AS
    BEGIN
    	UPDATE dbo.Logement
    	SET statut = 'Occupé'
    	FROM dbo.Logement AS L
    	JOIN INSERTED ON L.Numlogmt = C.Numlogement
    END
    Et pour la requête 4, vous devez utiliser la fonction DATEDIFF :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ALTER TABLE dbo.Contrat
    ADD CONSTRAINT CHK_Contrat_datedebut_datefin CHECK (DATEDIFF(month, datedebut, datefin) > 3)
    @++

  3. #3
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 43
    Points : 30
    Points
    30
    Par défaut
    Merci de ton aide Elsuket ca marche nickel maintenant.

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

Discussions similaires

  1. Chargement d'un XML en tables avec PL/SQL
    Par jenlin dans le forum PL/SQL
    Réponses: 7
    Dernier message: 21/03/2011, 12h55
  2. Probléme avec RQ SQL BETWEEN!!!
    Par Grozeil dans le forum Langage SQL
    Réponses: 10
    Dernier message: 06/04/2005, 11h31
  3. couplage base de données oracle et sqlserver avec c et c++
    Par mloul dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 22/11/2004, 14h00
  4. Pb avec requetes SQL
    Par Furtif_00 dans le forum Bases de données
    Réponses: 15
    Dernier message: 22/03/2004, 20h14
  5. probleme avec requete sql aime pas les strings
    Par lil_jam63 dans le forum Bases de données
    Réponses: 3
    Dernier message: 24/02/2004, 14h45

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