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 :

[SQL Server 2005] Suppression et création d'un trigger dans une procédure stockée


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 94
    Par défaut [SQL Server 2005] Suppression et création d'un trigger dans une procédure stockée
    Bonjour à tous,

    Je souhaiterais créer un trigger dynamiquement dans une procédure stockée.
    Le nom de la base ainsi que le nom de la table sur laquelle le trigger sera créé sont passés en paramètres.

    J'obtiens malheureusement le message d'erreur suivant lorsque j'exécute la procédure stockée:

    'CREATE TRIGGER' doit être la première instruction d'un lot de requêtes.
    La procédure stockée vérifie l'existance du trigger, le supprime le cas échéant puis le crée.

    Quelle peut être la solution?

    Merci

  2. #2
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2006
    Messages : 52
    Par défaut
    bonjour,

    il nous faudrait malheureusement plus de détails sur votre script, avez-vous identifiez à quel niveau se situe l'erreur dans votre code ?

    Christian

  3. #3
    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
    'CREATE TRIGGER' doit être la première instruction d'un lot de requêtes.
    C'est parce que 'CREATE TRIGGER' doit être la première instruction d'un lot de requêtes

    Blague à part postez votre code complet...
    Placez un GO juste avant votre CREATE TRIGGER cela devrait solutionner votre problème...

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 94
    Par défaut
    Ok, je poste le code:

    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
     
    SET @SQL_Create_Trigger = '	
     
    		USE ['+@DB_Name+']
     
    		IF  EXISTS (SELECT * FROM sys.triggers WHERE object_id = OBJECT_ID(N''[dbo].[TRG_01_Log_Modif_'+@TableName+']''))
    		DROP TRIGGER [dbo].[TRG_01_Log_Modif_T_'+@TableName+']
     
    		CREATE TRIGGER TRG_01_Log_Modif_'+@TableName+' ON dbo.'+@TableName+' FOR INSERT, UPDATE, DELETE
    		AS
     
    		DECLARE 
    			@DBName VARCHAR(500),
    			@Bit INT ,
    			@Field INT ,
    			@MaxField INT ,
    			@Char INT ,
    			@FieldName VARCHAR(128) ,
    			@TableName VARCHAR(128) ,
    			@PKCols VARCHAR(1000) ,
    			@SQL VARCHAR(2000), 
    			@UpdateDate VARCHAR(21) ,
    			@UserName VARCHAR(128) ,
    			@Type CHAR(1) ,
    			@PKSelect VARCHAR(1000),
    			@ColumnType VARCHAR(500)
     
    			...
     
     
    '
     
     
     
    EXEC (@SQL_Create_Trigger)
    Je ne poste que l'essentiel.

    Si je mets un 'GO' avant le 'CREATE TRIGGER' je pense qu'il y aura un problème...

  5. #5
    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
    Citation Envoyé par mad_martigan Voir le message
    Si je mets un 'GO' avant le 'CREATE TRIGGER' je pense qu'il y aura un problème...
    pourquoi donc ?

    prenez juste soin de mettre GO sur une ligne à part, sans autre instruction TSQL

  6. #6
    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
    Si je mets un 'GO' avant le 'CREATE TRIGGER' je pense qu'il y aura un problème...
    A part si vous estimez que le fait que çà marche soit un problème je ne vois pas lequel

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 16/09/2011, 19h35
  2. [SQL-Server 2005] suppression de tables
    Par apersonnat dans le forum Administration
    Réponses: 9
    Dernier message: 15/04/2010, 19h03
  3. [SQL Server 2005] Ordre de création des vues
    Par nox75 dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 17/07/2009, 16h28
  4. [SQL Server 2005] Suppression de serveur lié
    Par nox75 dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 06/11/2008, 14h15
  5. Réponses: 2
    Dernier message: 26/07/2007, 08h35

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