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 :

Schemas de bases de données


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 21
    Par défaut Schemas de bases de données
    J ai deux tables Table1,Table2.
    Dans ces tables,il ya un champ "Ville".
    Je voudrais que toutes les valeurs de Table1.ville soit aussitot mise à jour
    dans table2.ville (update,suppression,ajout...)
    J'utilise SQL server 2005 avec SQL Server management Studio.


    J'ai vu des choses qui y ressemble au niveau des schemas de base de données mais je n'est pas trouvé la solution.
    Si une personne peut m'aider,c'est cool

  2. #2
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Par défaut
    pour faire cela il te faut passer par un trigger

    tu as des exemples dans la doc (CREATE TRIGGER), sinon mets sur le forum le script des deux tables, je te l'écrirai.

    serge

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 21
    Par défaut
    Script Table 1

    USE [Essai]
    GO
    /****** Objet*: Table [dbo].[Table_1] Date de génération du script*: 10/16/2006 14:17:00 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    CREATE TABLE [dbo].[Table_1](
    [NomSociete] [nvarchar](50) COLLATE Albanian_BIN NULL,
    [Ville] [nvarchar](50) COLLATE Albanian_BIN NULL
    ) ON [PRIMARY]

    Script Table 2:

    USE [Essai]
    GO
    /****** Objet*: Table [dbo].[Table_2] Date de génération du script*: 10/16/2006 14:18:58 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    CREATE TABLE [dbo].[Table_2](
    [Ville] [nvarchar](50) COLLATE Albanian_BIN NULL,
    [TempsTrajet] [nvarchar](50) COLLATE Albanian_BIN NULL
    ) ON [PRIMARY]

    J'ai crée deus tables dans une base essai car je veux comprendre ton script pour le create triggers.

    Merci

  4. #4
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Par défaut
    CREATE TRIGGER trig1
    on table1
    FOR INSERT, UPDATE
    AS
    begin
    if update(ville)-- si le champ ville est mis a jour
    begin
    if not exists(select 1 from table2 where ville = inserted.ville)
    -- si le nom de la ville n'est pas déjà dans table2
    insert into table2 (ville) select ville from inserted
    end
    end

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 21
    Par défaut
    Je te remercie,je vais essayer.
    A+

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 21
    Par défaut
    Pour ajouter mon declencheur,j'ai developpé ma base dans l'explorateur et j'ai ajouté un declencheur sur Table_1.

    CREATE TRIGGER trig1
    on Table_1
    FOR INSERT, UPDATE
    AS
    begin
    if update(Ville)-- si le champ Ville est mis a jour
    begin
    if not exists(select 1 from Table_2 where Ville = inserted.Ville)
    -- si le nom de la Ville n'est pas déjà dans Table_2
    insert into Table_2 (Ville) select Ville from inserted
    end
    end

    Le compilateur ne comprend pas inserted.ville donc j 'ai remplacé la ligne par:
    if not exists(select 1 from Table_2 where Ville = (Select Ville from inserted)
    Deja est ce correct?

    Puis apres il me trouve une autre erreur sur le INSERT INTO
    Msg =Msg 156, Niveau 15, État 1, Procédure trig1, Ligne 10
    Incorrect syntax near the keyword 'INSERT'


    Desolé,j'ai du mal avec les commandes SQL.
    Merci

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/07/2009, 16h24
  2. Schema de base de données dans variable de contexte?
    Par lylau dans le forum Développement de jobs
    Réponses: 8
    Dernier message: 11/05/2009, 10h08
  3. [MPD] Comment traduire un heritage dans un schema de base de données
    Par keaton7 dans le forum Schéma
    Réponses: 6
    Dernier message: 06/04/2009, 19h37
  4. Réupération schema de base données
    Par poosh dans le forum Oracle
    Réponses: 3
    Dernier message: 05/11/2007, 09h08
  5. Requete sur 2 schemas d'une base de données
    Par judefei dans le forum Oracle
    Réponses: 2
    Dernier message: 15/10/2007, 17h20

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