Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[SQLServer 2000] Trigger FOR INSERT et table logique inserted

2 réponses
Avatar
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 -+-

2 réponses

Avatar
Fred BROUARD - SQLpro
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

Avatar
Eric Masson
"Fred" == Fred BROUARD <- SQLpro writes:











'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: <http://www.le-gnu.net> - Questions pour un champion -+-