[SQLServer 2000] Trigger FOR INSERT et table logique inserted

Le
Eric Masson
'Lut,

Dans le cas d'un trigger attaché aux évènements INSERT sur une table,
est-on certain que le moteur du sgbd ne va pas procéder à des
optimisations du type groupage de plusieurs enregistrements dans la
table logique inserted ?

En d'autres termes, est-ce qu'un code basique du type de celui qui suit
peut provoquer une perte d'évènements INSERT ou non ?

CREATE TRIGGER mon_trigger
ON ma_table
FOR INSERT
AS

DECLARE @ma_colonne1 INT
DECLARE @ma_colonne2 INT

SELECT @ma_colonne1 = ma_table_colonne1,
@ma_colonne2 = ma_table_colonne2
FROM inserted

EXECUTE ma_procedure @ma_colonne1, @ma_colonne2

Merci d'avance

Eric Masson

--
je n ai cité aucun message et sur irc on parle effectivement comme des
enfants de 5 ans na!
> 3. Quand tu cite un message, répond _après_ ce que tu cites !
-+- Yota in : <http://www.le-gnu.net> - A un Yota près c'était bon -+-
  • Partager ce contenu :
Vos réponses
Trier par : date / pertinence
Fred BROUARD - SQLpro
Le #21725571
Bonjour,

Un trigger opère TOUJOURS sur l'ensemble des lignes passées dans l'ordre SQL qui
l'a déclenché.

Par exemple si la table T_CLIENT contient 2547 lignes, le trigger sur DELETE dde
cette table verra passer 2547 lignes si l'ordre SQL suivant est passé :

DELETE FROM T_CLIENT

Il faut donc, toujours gérer la sémantique traitement de façon ensembliste dans
un trigger, ou utiliser un CURSOR (déconseillé pour des raisons de performances).

A lire :
http://sqlpro.developpez.com/cours/sqlserver/transactsql/#L5

A +

--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************

Eric Masson a écrit:
'Lut,

Dans le cas d'un trigger attaché aux évènements INSERT sur une table,
est-on certain que le moteur du sgbd ne va pas procéder à des
optimisations du type groupage de plusieurs enregistrements dans la
table logique inserted ?

En d'autres termes, est-ce qu'un code basique du type de celui qui suit
peut provoquer une perte d'évènements INSERT ou non ?

CREATE TRIGGER mon_trigger
ON ma_table
FOR INSERT
AS

DECLARE @ma_colonne1 INT
DECLARE @ma_colonne2 INT

SELECT @ma_colonne1 = ma_table_colonne1,
@ma_colonne2 = ma_table_colonne2
FROM inserted

EXECUTE ma_procedure @ma_colonne1, @ma_colonne2

Merci d'avance

Eric Masson

Eric Masson
Le #21725561
"Fred" == Fred BROUARD










'Lut,

Fred> Il faut donc, toujours gérer la sémantique traitement de façon
Fred> ensembliste dans un trigger, ou utiliser un CURSOR (déconseillé
Fred> pour des raisons de performances).

Ok, dans le cas présent, l'impératif de performance est faible (gestion
d'entrée sortie avec un automate), je vais donc regarder ce qui pose le
moins de problèmes pour la logique de l'appli.

Fred> A lire :
Fred> http://sqlpro.developpez.com/cours/sqlserver/transactsql/#L5

Très clair, ça change de la doc de TransactSQL...

Merci

Eric Masson

--
Demande éclaircissements: - que signifie "Suivi-à positionné sur fuad"?
"quoter" je présume voulant dire, raccourcir? "gâchi des ressources"
comment ça? C'est qui, quoi, Usenet.abus ? et vous-même qui êtes vous ?
-+- AH in:
Poster une réponse
Anonyme