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
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 43
    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 : 43
    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
    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
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 43
    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