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 :

Boucle dans un trigger


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
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 42
    Par défaut Boucle dans un trigger
    Bonjour,

    J'ai le trigger suivant:
    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
     
    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    go
     
    ALTER TRIGGER [InserNouvTourn] ON [dbo].[tournois] FOR INSERT
    AS
    BEGIN
    declare @notourn int,@k int,@i int,@j int;
     
     
    SELECT @notourn =inserted.no_tournois FROM inserted;
     
    SET @k = 1
    For (@i = 1 To 4) 'insertion des 16 équipes pour le tournoi'
       For (@j = 1 To 4)
          INSERT INTO equipes (poule,No_equipe,no_tourn) VALUES(@i,@k,@notourn) 'création des équipes'
          @k = @k + 1
       Next
    Next
    END
    Mais il y a une erreur sur mes boucles for!
    pourriez-vous m'indiquer comment les résoudre? merci d'avance

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2004
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Août 2004
    Messages : 137
    Par défaut
    Bonjour,
    je pense qu'il faudrai plutôt utiliser l'instruction 'WHILE' :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    WHILE (@monConteur < 5)
    BEGIN;
       INSERT INTO equipes...        
     
       SET @monConteur = @monConteur + 1;
    END;
    GO

  3. #3
    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,

    Les triggers sous SQL Server sont ensemblistes.
    Je donne dans ce post 3 liens qui expliquent pourquoi le votre ne l'est pas, et les erreurs auxquelles cela conduit.

    De plus SQL n'est pas un langage conçu pour des itérations, mais pour traiter les données dans leur ensemble.
    Donc quand on code en SQL, on doit oublier les boucles (WHILE, FOR) et les curseurs.

    Le trigger aurait donc pu être :

    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
    ALTER TRIGGER InserNouvTourn
    	ON dbo.tournois
    FOR INSERT
    AS
    BEGIN
    	;WITH
    		CTE AS
    		(
    			SELECT 1 AS n
    			UNION ALL SELECT 2
    			UNION ALL SELECT 3
    			UNION ALL SELECT 4
    		)	
    	INSERT INTO dbo.equipes
    	(
    		poule
    		, No_equipe
    		, no_tour
    	)
    	SELECT		J.n
    			, K.n
    			, I.no_tournois
    	FROM		inserted AS I
    	CROSS JOIN	CTE AS J
    	CROSS JOIN	CTE AS K
     
    END
    @++

Discussions similaires

  1. Recuperer derniere valeur modifiée dans un trigger
    Par xabs dans le forum Développement
    Réponses: 2
    Dernier message: 06/08/2004, 17h22
  2. Notion de boucles dans Business Object
    Par lionelEIGIP dans le forum Deski
    Réponses: 1
    Dernier message: 08/04/2004, 12h26
  3. RAZ GENERATOR dans un trigger
    Par kase74 dans le forum SQL
    Réponses: 2
    Dernier message: 08/09/2003, 19h43
  4. select dans un trigger sous Postgresql
    Par kastor_grog dans le forum Requêtes
    Réponses: 1
    Dernier message: 03/09/2003, 18h00
  5. [PostgreSQL] Refus de STATEMENT dans un trigger
    Par alex2205 dans le forum Requêtes
    Réponses: 3
    Dernier message: 10/03/2003, 13h51

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