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 avec action avant ET apres update de champ ?


Sujet :

Développement SQL Server

  1. #1
    Membre très actif Avatar de fredfred
    Inscrit en
    Septembre 2002
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 161
    Par défaut Trigger avec action avant ET apres update de champ ?
    Bonjour,

    Je voudrais savoir s'il est possible de créer un trigger sur un champ d'une table, et que ce trigger puisse agir avant et après l'écriture des données.

    Je m'explique : j'ai une table Article avec QteStock et CMUP.
    Quand QteStock est modifié, je voudrais que le trigger se déclenche et fonctionne de la manière suivante :

    - avant écriture dans la base, on enregistre les valeurs QteStock et CMUP dans une table de travail
    - mise à jour effective de la base
    - après ecriture, on enregistre les nouvelles valeurs dans cette même table de travail.

    Le but final étant d'avoir une table du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      code_art  |   date_heure  |  qte_avant   |  cmup_avant   |  qte_apres   |   cmup_apres
    avec une ligne à chaque fois que QteStock d'un article est modifié.

    Est-ce que c'est jouable ?

    Merci.

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Les triggers Sql Server (qui sont uniquement des triggers "commande" il n'y a pas de trigger "ligne" en SQL SERVER) exposent deux vues (enfin deux pour les trigger UPDATE) qui sont "delete" et "insert".

    Il suffit de lire la vue "delete" pour obtenir les valeurs "anciennes" et la vue "insert" pour lire les valeurs "nouvelles" (c'est un peu l'équivalent de :old et :new en Oracle, mais qui ne sont dans le cas d'Oracle qu'accessible dans les triggers "ligne").

    Il va de soit qu'un trigger "ON INSERT" n'expose que la vue "insert" et un trigger "ON DELETE" n'expose que la vue "delete".

    Que ensuite tu utilises un trigger BEFORE ou AFTER dépend de tes choix applicatifs. (mais dans ton cas, ce serait plutôt un TRIGGER "AFTER", c'est à dire appelé après la mise à jour).

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 021
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 021
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Les triggers Sql Server (qui sont uniquement des triggers "commande" il n'y a pas de trigger "ligne" en SQL SERVER) exposent deux vues (enfin deux pour les trigger UPDATE) qui sont "delete" et "insert".
    NON ! deleted et inserted

    Il suffit de lire la vue "delete" pour obtenir les valeurs "anciennes" et la vue "insert" pour lire les valeurs "nouvelles" (c'est un peu l'équivalent de :old et :new en Oracle, mais qui ne sont dans le cas d'Oracle qu'accessible dans les triggers "ligne").

    Il va de soit qu'un trigger "ON INSERT" n'expose que la vue "insert" et un trigger "ON DELETE" n'expose que la vue "delete".

    Que ensuite tu utilises un trigger BEFORE ou AFTER dépend de tes choix applicatifs. (mais dans ton cas, ce serait plutôt un TRIGGER "AFTER", c'est à dire appelé après la mise à jour).
    NON : il n'y a pas de trigger BEFORE dans SQL Server. Mais des trigger INSTEAD OF et AFTER.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    NON ! deleted et inserted
    NON : il n'y a pas de trigger BEFORE dans SQL Server. Mais des trigger INSTEAD OF et AFTER.

    A +
    Décidément, 8 mois sans toucher à SQL SERVER ne me réussissent pas....

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 021
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 021
    Billets dans le blog
    6
    Par défaut
    et puis il va y avoir DENALI !!!!

    ;-)

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  6. #6
    Membre très actif Avatar de fredfred
    Inscrit en
    Septembre 2002
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 161
    Par défaut
    J'ai essayé ça

    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
     
    ALTER TRIGGER [dbo].[EV_OCI_ARTSTOCK]
            ON  [dbo].[F_ARTSTOCK]
            FOR UPDATE
     AS
     BEGIN
     
    declare @ref varchar(50)
    DECLARE @old_qte int
    DECLARE @oldMontSto money
     
     -- inutile si pas d'update de la colonne visée
     IF NOT UPDATE(AS_QTESTO)
     RETURN
     
     -- stocke les anciennes valeurs
     SELECT @ref = AR_REF 
     FROM INSERTED
     
     SELECT @old_qte = F_ARTSTOCK.AS_QteSto, @oldMontSto = F_ARTSTOCK.AS_MontSto
     FROM F_ARTSTOCK
     WHERE F_ARTSTOCK.AR_REF = @ref
     
     INSERT INTO OCI_MVTSTOCK (AR_REF, Heure, QTE_AV, CMUP_AV, QTE_AP, CMUP_AP) 
     SELECT INSERTED.AR_REF, getdate(), @old_qte, @oldMontSto, INSERTED.AS_QteSto, INSERTED.AS_MontSto
     FROM INSERTED
     
     -- rollback en cas d'erreur
    IF @@Error <> 0
    ROLLBACK TRANSACTION
     
    END
    Mais les valeurs AV et AP de la table OCI_MVTSTOCK sont identiques, je ne parviens pas à récupérer les valeurs avant l'update.

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 021
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 021
    Billets dans le blog
    6
    Par défaut
    Déjà c'est pas bon, car vous avez des variables, alors qu'un trigger est ensembliste !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  8. #8
    Membre très actif Avatar de fredfred
    Inscrit en
    Septembre 2002
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 161
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Déjà c'est pas bon, car vous avez des variables, alors qu'un trigger est ensembliste !

    A +
    ???

    Parce que j'ai mis des DEFINE ?

  9. #9
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par fredfred Voir le message
    ???

    Parce que j'ai mis des DEFINE ?
    Comme je te l'ai dit supra les trigger SQL sont des trigger COMMANDE !

    ce qui signifie que les vue deleted et inserted (merci à SQLPro de m'avoir corrigé) peuvent contenir plusieurs lignes. Or, ici le SELECT .. INTO ne peut en traiter qu'une.

    Inserted et deleted ne fonctionne pas comme :old et ;:new de Oracle qui ne contienne qu'une ligne puisque accessible uniquement depuis les trigger "ligne" (concept inexistant en SQL SERVER).

    En clair si on fait par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE MyTable SET MyField = newValue WHERE MyKeyNonUnique = MyValue
    Le trigger UPDATE de MyTable ne sera appelé qu'une fois quel que soit le nombre de lignes concernées et les vues deleted et inserted vont contenir toutes les lignes concernées.

  10. #10
    Membre très actif Avatar de fredfred
    Inscrit en
    Septembre 2002
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 161
    Par défaut
    OK, pigé.

    Du coup, j'ai réécrit mon trigger ainsi :
    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    ALTER TRIGGER [dbo].[EV_OCI_ARTSTOCK]
            ON  [dbo].[F_ARTSTOCK]
            FOR UPDATE
     AS
     BEGIN
     
    declare @ref varchar(50)
    DECLARE @old_qte int
    DECLARE @old_MontSto money
    DECLARE @new_qte int
    DECLARE @new_MontSto money
     
     	-- inutile si pas d'update de la colonne visée
     	IF NOT UPDATE(AS_QTESTO)
     	RETURN
     
         DECLARE INS_curseur CURSOR FORWARD_ONLY READ_ONLY FOR
         SELECT AR_REF, AS_QteSto, AS_MontSto
         FROM INSERTED
         OPEN INS_curseur
     
         FETCH NEXT FROM INS_curseur
         INTO @ref, @new_qte, @new_MontSto 
     
         -- Check @@FETCH_STATUS to see if there are any more rows to fetch.
         WHILE @@FETCH_STATUS = 0
         BEGIN
     
             -- stocke les anciennes valeurs
             SELECT @old_qte = F_ARTSTOCK.AS_QteSto, @old_MontSto = F_ARTSTOCK.AS_MontSto
             FROM F_ARTSTOCK
             WHERE F_ARTSTOCK.AR_REF = @ref
     
             INSERT INTO OCI_MVTSTOCK (AR_REF, Heure, QTE_AV, CMUP_AV, QTE_AP, CMUP_AP) 
             values (@ref, getdate(), @old_qte, @old_MontSto, @new_qte, @new_MontSto)
     
             -- rollback en cas d'erreur
             IF @@Error <> 0
             ROLLBACK TRANSACTION
     
             FETCH NEXT FROM INS_curseur
             INTO @ref, @new_qte, @new_MontSto 
       END
     
    END
    Mais je ne parviens toujours pas à récupérer les valeurs avant modif.

  11. #11
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 021
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 021
    Billets dans le blog
    6
    Par défaut
    Nombreuses erreurs :
    1) pas de close du curseur
    2) pas de deallocate du curseur
    3) un rollback dans une boucle dans un curseur va se traduire par des effets de bords inattendus...
    3) pourquoi passer par un curseur qui est lent alors que vous pouvez faire cela sous forme de requêtes optimisées ?

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  12. #12
    Membre très actif Avatar de fredfred
    Inscrit en
    Septembre 2002
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 161
    Par défaut
    Pour l'instant, c'est du test à l'arrache, s'il manque des bouts, ça n'est pas grave. La version finale ne ressemblera probablement pas du tout à ça.
    Si un curseur est plus lent, alors soit, j'utiliserai volontier une requête.
    Mais tant que je n'aurai pas de solution à mon problème, je ne perdrai pas de temps à blinder le code.

  13. #13
    Membre très actif Avatar de fredfred
    Inscrit en
    Septembre 2002
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 161
    Par défaut
    ah, je viens juste de capter que les anciennes valeurs étaient stockées dans la vue DELETED.
    Du coup, ça à l'air de fonctionner selon mes besoins.

  14. #14
    Membre très actif Avatar de fredfred
    Inscrit en
    Septembre 2002
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 161
    Par défaut
    est-il possible qu'un même enregistrement se retrouve plusieurs fois dans DELETED / INSERTED, s'il a été modifié par plusieurs utilisateurs en même temps, ou qu'une même transaction le modifie plusieurs fois ?

  15. #15
    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 : 44
    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,

    Pour l'instant, c'est du test à l'arrache, s'il manque des bouts, ça n'est pas grave. La version finale ne ressemblera probablement pas du tout à ça.
    Si un curseur est plus lent, alors soit, j'utiliserai volontier une requête.
    Mais tant que je n'aurai pas de solution à mon problème, je ne perdrai pas de temps à blinder le code.
    Pourquoi ne pas le faire d'entrée ??? c'est justement une perte de temps, il va vous falloir revenir dessus, ce que comme tout le monde vous ne ferez pas.

    est-il possible qu'un même enregistrement se retrouve plusieurs fois dans DELETED / INSERTED, s'il a été modifié par plusieurs utilisateurs en même temps, ou qu'une même transaction le modifie plusieurs fois ?
    Non, car la portée de telles vues est celle de la session.

    Au passage le type money est plus connu pour produire des erreurs de calculs que pour autre chose.
    Il vaut mieux utiliser le type decimal.

    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
    ALTER TRIGGER [dbo].[EV_OCI_ARTSTOCK]
            ON  [dbo].[F_ARTSTOCK]
            FOR UPDATE
    AS
    BEGIN
    	SET NOCOUNT ON
     
     	-- inutile si pas d'update de la colonne visée
     	IF NOT UPDATE(AS_QTESTO)
     		RETURN
     
    	INSERT INTO dbo.OCI_MVTSTOCK
    	(
    		AR_REF
    		, Heure
    		, QTE_AV
    		, CMUP_AV
    		, QTE_AP
    		, CMUP_AP
    	)
    	SELECT		I.AR_REF
    			, GETDATE()
    			, D.AS_QteSto
    			, D.AS_MontSto
    			, I.AS_QteSto
    			, I.AS_MontSto
    	FROM		inserted AS I
    	INNER JOIN	deleted AS D
    				ON I.AR_REF = D.AR_REF 
    END
    Voilà, en une seule instruction ...
    Voyez ce que vous avez fait avec votre curseur : il n'y a rien de plus crade qu'un curseur en bases de données relationnelles SQL.
    J'ai également publié un article sur l'écriture ensembliste de triggers, que l'on trouve très simplement avec un moteur de recherche très connu.

    Tout en SQL est ensembliste parce que ce langage est conçu pour cela.
    Si vous faites du ligne à ligne (RBAR dans la littérature), ne vous attendez pas à des performances au moins correctes.

    @++

  16. #16
    Membre très actif Avatar de fredfred
    Inscrit en
    Septembre 2002
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 161
    Par défaut
    Citation Envoyé par elsuket Voir le message
    Bonjour,
    Pourquoi ne pas le faire d'entrée ??? c'est justement une perte de temps, il va vous falloir revenir dessus, ce que comme tout le monde vous ne ferez pas.
    Et j'ai arreté de lire là !

    On se connait ? on a déjà bossé ensemble ?
    Me faire traiter de feignasse par un inconnu qui à la grosse tête quand je demande un peu d'aide, ça va 5 minutes.
    OSEF, mon code est terminé depuis vendredi soir.

  17. #17
    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 : 44
    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
    Et j'ai arreté de lire là !
    Tanpis pour vous
    Je n'ai jamais bossé avec qui que ce soit sur ce forum

    Dire que j'ai la grosse tête c'est vraiment mal me connaître, ce qui justifie qu'effectivement nous n'avons pas travaillé ensemble.
    Si j'arrivais pas à passer les portes ou que j'aie les chevilles qui se touchent, expliquez-moi pourquoi j'ai pris la peine de vous donner le code du trigger.

    Si vous avez envie de mal faire les choses, ça vous regarde.
    Mais avec un aussi mauvais à priori, je suis finalement content de ne pas avoir à travailler avec vous.

    OSEF, mon code est terminé depuis vendredi soir.
    Impressionnant !

    Allez bon boulot

    @++

  18. #18
    Membre Expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Par défaut
    on a déjà bossé ensemble ?
    Honnêtement à vous lire et vu votre réaction çà ne donne pas envie... des développeurs avec votre raisonnement couplé d'un 'je vous emmerde' j'en croise plein dans ma boite... qu'il faut que je sauve le jour ou on arrive en prod et que leur 'truc à l'arrache mais je sais faire mieux...' amène des temps de réponses digne d'une page de CDISCOUNT...

  19. #19
    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 : 44
    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
    Honnêtement à vous lire et vu votre réaction çà ne donne pas envie... des développeurs avec votre raisonnement couplé d'un 'je vous emmerde' j'en croise plein dans ma boite... qu'il faut que je sauve le jour ou on arrive en prod et que leur 'truc à l'arrache mais je sais faire mieux...' amène des temps de réponses digne d'une page de CDISCOUNT...
    Soit on a bossé dans la même boîte ... soit ... non ... NON ... y'en a partout des comme ça ?

Discussions similaires

  1. [RegEx] preg_replace un caractère avec espace avant et après
    Par redah75 dans le forum Langage
    Réponses: 24
    Dernier message: 27/09/2011, 21h35
  2. Ouvrir .raw avec header avant et après
    Par Newenda dans le forum MATLAB
    Réponses: 13
    Dernier message: 04/01/2011, 16h56
  3. Trigger avec update sur même table
    Par Thig dans le forum PL/SQL
    Réponses: 7
    Dernier message: 31/08/2007, 15h45
  4. Exec avec paramètres avant et après exécutable
    Par blinkz0rz dans le forum ANT
    Réponses: 3
    Dernier message: 20/07/2006, 15h46
  5. TRIGGER avec inserted + UPDATE sur INSERTED
    Par shaka84 dans le forum Développement
    Réponses: 3
    Dernier message: 12/04/2006, 11h26

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