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

Langage SQL Discussion :

[SQL] récupérer une variable dans un trigger


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 15
    Points : 15
    Points
    15
    Par défaut [SQL] récupérer une variable dans un trigger
    bonjour,
    mon problème est le suivant :
    dans un trigger sur une table contact j'ai besoin de récupérer la clé primaire nommé CT_CODE de la table contact dans un trigger sur modif, ajout, suppression pour la mettre dans une table historique

    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
    CREATE TRIGGER modif_contact 
    ON contact 
    FOR INSERT, UPDATE, DELETE
    AS
    	DECLARE @code char(8);
     
    -- c'est ici que j'ai des problèmes
    	SELECT @code = CT_CODE
    	FROM CONTACT
    	print(@code);
    --
    	DECLARE @rowInsert int, @rowDelete int;	
     
    	SELECT @rowInsert = count(*)
    	FROM INSERTED
    	SELECT @rowDelete = count(*)
    	FROM DELETED
     
    	if @rowInsert<>0
    	begin
    		print('inserted');
    		INSERT INTO historique
    		VALUES(@code,'contact','insert');
    		return;
    	end
    	else
    		print('compte deleted');
    		if @rowDelete<>0
    		begin
    			print('deleted');
    			INSERT INTO historique
    			VALUES(@code,'contact','delete');
    			return;
    		end
    		else
    			print('update');
    			INSERT INTO historique
    			VALUES(@code,'contact','update');
    			return;
    print @code
    j'ai l'impression en effet que le @code prend a chaque fois la dernière ligne de la table contact or je voudrais récuperer l'attribut CT_CODE concerné

    merci j'espère avoir été assez clair

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 849
    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 : 21 849
    Points : 52 968
    Points
    52 968
    Billets dans le blog
    6
    Par défaut
    Votre trigger est totalement faux car il s'ctive UNE SEULE FOIS même si dans la table il y a 4351321 lignes. donc dans un trigger on ne doit voir que du code à bases de requêtes SQL et non des variables...

    Lisez l'article que j'ai écrit à ce sujet :
    http://sqlpro.developpez.com/cours/s...ransactsql/#L5

    A +

Discussions similaires

  1. Récupérer une variable dans une autre frame
    Par Debutant39 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 01/07/2007, 22h27
  2. Réponses: 9
    Dernier message: 21/05/2007, 00h33
  3. [Conception] Récupèrer une variable dans une liste déroulante
    Par olivier94 dans le forum PHP & Base de données
    Réponses: 22
    Dernier message: 21/02/2007, 12h12
  4. Récupérer une variable dans un script javascript
    Par Finelarme dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 28/10/2006, 18h41
  5. récupérer une variable dans un select case
    Par rob2-9 dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 23/12/2005, 10h54

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