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 :

souci avec trigger -- before en ms server?


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 61
    Par défaut souci avec trigger -- before en ms server?
    Boujour à tous

    Je suis entrain de creer un trigger qui supprime et met a jour de facon automatique une table appelé Accountbase(base client) en fonction d'une table F_COMPTET situé dans une autre base.
    J'ai un problème qui m'empeche toute suppression, cleui ci est dut a plusieurs contraintes de clé étrangére sur une table associé a F_COMPTET qui s'appelle F_DOCENTETE.
    Ce que j'aimerais c'est lors d'une suppresion dans F_COMPTET:
    *Mettre a null certaines valeurs de la table DOCENTETE lorsque je supprime une ligne dans ma table F_COMPTET afin de regler le problème de clé etrangére

    Seulement voila il n y a pas d'instruction BEFORE DELETE comme en t-sql par exemple...
    Je ne sais pas si j'a été clair dans mon explication?
    Est ce que quelqu'un pourrait m'aider?

    voila le code de mon trigger pour l'instant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    CREATE TRIGGER Modif_Sage_client 
    ON ESSAIGAMIELEC.dbo.F_COMPTET
    FOR DELETE,UPDATE 
    AS 
     
    --Pour la supression d'un client
    IF NOT EXISTS(SELECT * FROM INSERTED) AND EXISTS(SELECT * FROM DELETED) -- On est dans le cas d'une suppression : instruction DELETE
    BEGIN
    		DELETE FROM AMIELEC_MSCRM.dbo.AccountBase
    			FROM AMIELEC_MSCRM.dbo.AccountBase Acc	
    				INNER JOIN DELETED Del		--Del pour deleted
    					ON Acc.Name=Del.CT_Num
    END
    j'ai essayer d'ajouter ca mais ca ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    		Update ESSAIGAMIELEC.dbo.F_DOCENTETE 
    			Set ESSAIGAMIELEC.dbo.F_DOCENTETE.CT_NumPayeur=Null
    				FROM ESSAIGAMIELEC.dbo.F_DOCENTETE DOCE	
    					INNER JOIN DELETED Del
    						on DOCE.CT_NumPayeur=Del.CT_NumPayeur

  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
    si tu veux que ton trigger fonctionne simplement, tu devrais créer une proc du style

    proc delete_acc_num
    (@name varchar(50))
    as
    begin
    ...
    end
    qui gère tes clefs, etc...

    et puis
    CREATE TRIGGER Modif_Sage_client
    ON ESSAIGAMIELEC.dbo.F_COMPTET
    FOR DELETE,UPDATE
    AS

    declare @name varchar(50)

    select @name=CT_Num from deleted -- ATTENTION a l'unicité

    --Pour la supression d'un client
    IF NOT EXISTS(SELECT 1 FROM INSERTED) AND EXISTS(SELECT 1 FROM DELETED) -- On est dans le cas d'une suppression : instruction DELETE
    BEGIN
    delete_acc_num @name
    END

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 61
    Par défaut
    D'accord j'y avais penser mais je ne sais pas comment lier ma procedure et mon trigger?

  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
    je pense que ta proc devrait avoir cette allure

    create proc delete_acc_num
    (@name varchar(50))
    as
    begin

    UPDATE ESSAIGAMIELEC.dbo.F_DOCENTETE
    SET CT_NumPayeur=NULL
    where CT_NumPayeur=@name

    DELETE FROM AMIELEC_MSCRM.dbo.AccountBase
    where Name=@name
    end

Discussions similaires

  1. Soucis avec l'installation de NOD32 server
    Par a.elidrissi dans le forum Sécurité
    Réponses: 0
    Dernier message: 12/04/2011, 16h27
  2. Pb avec Trigger before delete : ORA-04091
    Par nloubes dans le forum Oracle
    Réponses: 1
    Dernier message: 22/10/2009, 14h34
  3. Soucis avec suppression de service sous Server 2003
    Par toomsounet dans le forum Windows Serveur
    Réponses: 2
    Dernier message: 30/10/2008, 12h53
  4. J’ai un souci avec les valeurs null sous sql server.
    Par zoltix dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 20/06/2006, 10h27
  5. Créer un trigger "before insert" avec SQL Server
    Par bubi dans le forum Développement
    Réponses: 2
    Dernier message: 14/11/2005, 10h12

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