[SQLServer 2000] Trigger FOR INSERT et table logique inserted
2 réponses
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 -+-
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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
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
"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 -+-
"Fred" == Fred BROUARD <- SQLpro <brouardf@club-internet.fr>> 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 -+-
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 -+-