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

PowerAMC Discussion :

Modèle de trigger - Utilisation de variable


Sujet :

PowerAMC

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 72
    Points : 75
    Points
    75
    Par défaut Modèle de trigger - Utilisation de variable
    Bonjour,

    Je souhaite pouvoir créer un modèle de trigger qui modifie une colonne après chaque update.

    Mon problème est que dans la définition du trigger je n'arrive pas à récupérer le nom de la clé primaire de la table sur lequel j'applique ensuite le trigger.

    La variable %TABLE% fonctionne très bien mais pas %PK% ou %PKNAME%.

    Il y a t-il une solution ?

    Merci d'avance.

  2. #2
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Hola,

    As-tu essayé %PKEY% ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 72
    Points : 75
    Points
    75
    Par défaut
    Salut,

    Je viens d'essayer à l'instant et ça ne marche pas non plus...

  4. #4
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Re,

    Sinon par défaut AMC génére les contraintes de clef primaire sous ce format là
    .

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 72
    Points : 75
    Points
    75
    Par défaut
    Question très bête (désolé je débute en AMC et MS SQL) : le nom de la contrainte de clé primaire peut m'aider à retrouver le nom de la clé ?

    En fait mon besoin est de trouver le nom de la clé primaire pour mettre dans mon modèle de trigger quelque chose comme ç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
    create trigger %TABLE%_TRIGGER_UPDATE_DM on %TABLE% for insert,update as
    
    begin
    	
    	SET NOCOUNT ON
    	if NOT UPDATE (dm)
    	BEGIN	
    		--On déclare les variables
    		declare @pk int;
    
    		declare cursorUpdateDM CURSOR FOR
    			select %PKNAME% from inserted
    		OPEN cursorUpdateDM;
    		FETCH cursorUpdateDM into @pk;
    		while (@@fetch_Status = 0)
    		BEGIN
    			update %TABLE% set dm = getdate() where %PKNAME% = @pk;
    			if (@@error) <> 0
    				GOTO LBL_ERROR
    			FETCH cursorUpdateDM into @pk;
    		END
    		CLOSE cursorUpdateDM
    		DEALLOCATE cursorUpdateDM
    	END
    
    return
    LBL_ERROR:
    	ROLLBACK TRANSACTION;
    		
    end
    En tout cas merci beaucoup pour ton aide.

  6. #6
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Bonjour,

    Citation Envoyé par mezzo_998
    Question très bête (désolé je débute en AMC et MS SQL) : le nom de la contrainte de clé primaire peut m'aider à retrouver le nom de la clé ?
    Il n'y a pas de question bête !
    Je crois que j'ai compris ce que tu demandes.
    Ce n'est pas la contrainte PK qui t'interesse, mais le nom de la colonne.
    Ds les scripts de création de BD générés par AMC, 1 contrainte de clef primaire s'écrit sous la forme :
    AMC a généré :
    CONSTRAINT laContrainte PRIMARY KEY (LaColonne)
    En regardant ds les paramétres de script pour les SGBD ds AMC j'ai trouvé %PKEYCOLUMNS%.
    Ce qui donnerai ds ton cas :
    laContrainte = %PKEY% et LaColonne = %PKEYCOLUMNS%

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 72
    Points : 75
    Points
    75
    Par défaut
    Bonjour,

    Malheureusement la variable %PKEYCOLUMNS% ne marche pas non plus dans les modèles de triggers.

    Je crois que le plus simple est que je continue à changer le nom des colonnes à la mano.

    Merci beaucoup pour ton aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 17
    Dernier message: 12/11/2008, 10h04
  2. Réponses: 4
    Dernier message: 11/07/2005, 11h03
  3. Réponses: 7
    Dernier message: 07/09/2004, 14h16
  4. [XSL] utiliser une variable pour nom d'élément
    Par luta dans le forum XSL/XSLT/XPATH
    Réponses: 13
    Dernier message: 07/09/2004, 13h58
  5. Utiliser des variables d'environnements
    Par Xam335 dans le forum C++Builder
    Réponses: 2
    Dernier message: 14/08/2004, 14h15

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