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

Développement SQL Server Discussion :

Trigger insère ligne supplémentaire


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2011
    Messages : 790
    Par défaut Trigger insère ligne supplémentaire
    Bonjour,

    J'ai deux table contrat et société.

    Dans la table contrat j'ai un champ nommé type contrat.

    Dans la table société j'ai un autre champ nommé type contrat.

    J'ai créé un trigger sous la table contrat qui permet de mettre à jour le champ type contrat dans la table société juste après modification d'une ligne dans la table contrat.

    Pour ceci j'ai créé le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    USE [RESOCRM]
    GO
    /****** Object:  Trigger [dbo].[Typecontrat]    Script Date: 03/29/2016 11:35:34 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    -- =============================================
    -- Author:		<Author,,Name>
    -- Create date: <Create Date,,>
    -- Description:	<Description,,>
    -- =============================================
    ALTER TRIGGER [dbo].[Typecontrat]
       ON  [dbo].[XCONTRAT]
       AFTER update
    AS 
    BEGIN
     
     
    	SET NOCOUNT ON;
     
       declare @typecontrat nvarchar(100)
       declare @societe int
     
     
       select @societe = xcon_companyid from inserted
     
       select @company = comp_companyid from company where comp_companyid = @societe
     
       select @typecontrat = (select xcon_typecontrat  from inserted where xcon_companyid = @societe)
     
     
       update company set comp_typecontrat = @typecontrat  where comp_companyid = @societe
     
     
     
    END
    J’obtiens la bonne modification dans ma table société mais le problème lorsque j’insère maintenant un nouveau contrat, je trouve q'une nouvelle société a été créé une une autre fois.

    Est-ce-qu'il manque un bout de code dans la requête update ?

    Merci

  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
    Par défaut
    Bonjour,

    En aucun cas votre requete UPDATE ne pourra insérer directement de ligne dans la table. Peut-être avez vous un autre déclencheur qui insère cette ligne.

    Par ailleurs, votre déclencheur n'est pas ensembliste : il se peut que plusieurs ligne soient mises à jour simultanément dans la table des contrats, et votre déclencheur ne le prend pas en compte.

    Enfin, puisque le type de contrat dans la table company est le résultat d'un calcul, il serait préférable de calculer le type dans une vue plutôt que dans une colonne de la table Company, ce qui vous garantira l’exactitude de l'information.

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/02/2013, 16h05
  2. Réponses: 1
    Dernier message: 29/10/2012, 13h27
  3. Réponses: 5
    Dernier message: 24/09/2010, 13h35
  4. Réponses: 16
    Dernier message: 03/01/2009, 17h37
  5. Modifier un trigger en ligne de CMD sql
    Par helmis dans le forum PL/SQL
    Réponses: 6
    Dernier message: 05/08/2008, 12h13

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