SQL Server - trigers y stored

 
Vista:

trigers y stored

Publicado por leo (1 intervención) el 12/12/2005 05:01:21
buenas noches:
tengo un trigger que llama a un stored procedure luego de insertar los valores de la tabla movimientos luego de la insercion debo actualizar el stock en la tabla articulos de acuerdo a la tabla movimientos solo me actualiza uno de los articulos y no todos¡alguien sabe que peude ser,
pongo el codigo utilizado
CREATE TRIGGER t_movim ON movimiento FOR INSERT AS
declare @codigo_arti nvarchar(30)
declare @tipo char(1)
declare @cant_mod numeric(6)
drop trigger t_movim
declare c_movim cursor for select m.codigo_arti,m.tipo,m.cant_mod from
inserted as m
open c_movim
fetch next from c_movim
into @codigo_arti,@tipo,@cant_mod
while @@fetch_status=0
begin
exec p_mod @codigo_arti,@tipo,@cant_mod
fetch next from c_movim
into @cant_mod,@codigo_arti,@tipo
end
close c_movim
deallocate c_movim

Create Procedure p_mod
@codigo_arti nvarchar(30),
@tipo char(1),
@cant_mod numeric(6)
as
Begin

if @tipo='A'
begin
update articulos set cantidad=cantidad+ @cant_mod
where codigo_arti= @codigo_arti
end
if @tipo='B'
begin
update articulos set cantidad=cantidad - @cant_mod
where codigo_arti= @codigo_arti
end

End
go

desde ya muchas gracias
saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:trigers y stored

Publicado por Jesus Oliver (3 intervenciones) el 12/12/2005 15:14:48
Sinceramente, me llama mucho la atencion la cuarta linea...eso de drop trigger...

Otra cosita, un trigger debe usarse para operaciones rapidas y simples, no para operaciones tan complejas, esto disminuye considerablemente el rendimiento.

y porque no haces directamente :

CREATE TRIGGER t_movim ON movimiento FOR INSERT AS
declare @codigo_arti nvarchar(30)
declare @tipo char(1)
declare @cant_mod numeric(6)

select @codigo_arti=m.codigo_arti ,@tipo= m.tipo ,@cant_mod=m.cant_mod from
inserted as m

if @tipo='A'
begin
update articulos set cantidad=cantidad+ @cant_mod
where codigo_arti= @codigo_arti
end
if @tipo='B'
begin
update articulos set cantidad=cantidad - @cant_mod
where codigo_arti= @codigo_arti
end
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:trigers y stored

Publicado por leo (1 intervención) el 12/12/2005 16:32:34
perdon el drop me quedo de cuando hacia pruebas para borrar los datos y volver a intentarlo, eso no va.Si es es mas sencillo y claro lo que me has dicho , pero se me ha pedido explicitamente que lo realice de esta manera, un trigger que llame a un procedure.Cualquier otra sugerencia tuya sera recibida con mucho gusto.Muchas gracias y seguire intentando
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar