Rendimiento en Triggers

19/10/2007 - 13:39 por Peni | Informe spam
Tengo varios trigger que actualizan el stock de artículos. Los tengo
puestos por separado los de Insert, Update y Delete, el caso es que la
única diferencia es que unos suman y otros restan. De cara al
rendimiento, es mejor dejarlos así o crear uno solo para las tres
operaciones?


=Saludos. Peni.
=

Preguntas similare

Leer las respuestas

#6 Peni
23/10/2007 - 20:22 | Informe spam
El caso es que alguna vez lo había visto, pero no le presté atención,
ahora ya están modificados todos los triggers :-)

Evidentemente para las sentencias SELECT los triggers "todavía" no se activan
:):)
Es sólo para insert, update, delete...

Saludos,

Saludos,

Eladio Rincón,
SQL Server MVP
http://blogs.solidq.com/es/elrincondeldba

"Peni" wrote in message
news:
por cierto, fíjate en el @@rowcount = 0 porque los triggers siempre se
activan... independientemente de que se "toquen" o no filas :)


Coñe!! Eso no lo sabía, gracias :-))

hola Peni,

Es un poco cuestión de gustos como dice Maxi; el siguiente código es
ilustrativo para separar cada cosa:


CREATE TRIGGER trg_T1_IUD ON T1 FOR INSERT, UPDATE, DELETE
AS
IF @@rowcount = 0 RETURN

IF EXISTS(SELECT * FROM inserted)
IF EXISTS(SELECT * FROM deleted)
PRINT 'UPDATE'
ELSE
PRINT 'INSERT'
ELSE
PRINT 'DELETE'


por cierto, fíjate en el @@rowcount = 0 porque los triggers siempre se
activan... independientemente de que se "toquen" o no filas :)



Saludos,

Saludos,

Eladio Rincón,
SQL Server MVP
http://blogs.solidq.com/es/elrincondeldba

"Peni" wrote in message
news:
Tengo varios trigger que actualizan el stock de artículos. Los tengo
puestos por separado los de Insert, Update y Delete, el caso es que la
única diferencia es que unos suman y otros restan. De cara al
rendimiento, es mejor dejarlos así o crear uno solo para las tres
operaciones?


=>>>> Saludos. Peni.
=>>>>







=>> Saludos. Peni.
=>>







=Saludos. Peni.
=
Respuesta Responder a este mensaje
#7 Penta
24/10/2007 - 01:36 | Informe spam
Estimados.
Eso no lo sabia, pero me queda la duda como se activa sin hacer una de
las sentencia indicadas ??
Me explico ?? si se activa un Insert como es posible que el rowcount
sea 0 ??

Atte.
Penta.
Respuesta Responder a este mensaje
#8 Eladio Rincón
24/10/2007 - 11:03 | Informe spam
sigue este ejemplo paso a paso y lo verás:

use northwind

go

if exists (select * from sys.tables where name = 't1')

drop table dbo.t1

go

create table dbo.t1 (id char(1) default 'a')

go


select * from dbo.t1

go


insert dbo.t1 select '1' from dbo.t1 where 1 = 0

go


select * from dbo.t1

go


create trigger trr_t1_insert on dbo.t1 for insert

as

if @@rowcount = 0

insert dbo.t1 default values

go


insert dbo.t1 select '1' from dbo.t1 where 1 = 0

go


select * from dbo.t1

go


Saludos,

Eladio Rincón,
SQL Server MVP
http://blogs.solidq.com/es/elrincondeldba

"Penta" wrote in message
news:
Estimados.
Eso no lo sabia, pero me queda la duda como se activa sin hacer una de
las sentencia indicadas ??
Me explico ?? si se activa un Insert como es posible que el rowcount
sea 0 ??

Atte.
Penta.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida