Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Ayuda con Trigger - Sintaxis

Estas en el tema de Ayuda con Trigger - Sintaxis en el foro de SQL Server en Foros del Web. Saludos tengo el siguiente problema... resulta que construi este trigger pero me tira un erro de sintaxis create trigger actsaldo on detmovimiento for update as ...
  #1 (permalink)  
Antiguo 13/07/2010, 15:36
 
Fecha de Ingreso: enero-2010
Ubicación: Stgo - Chile
Mensajes: 73
Antigüedad: 14 años, 3 meses
Puntos: 0
Ayuda con Trigger - Sintaxis

Saludos tengo el siguiente problema...

resulta que construi este trigger pero me tira un erro de sintaxis

create trigger actsaldo on detmovimiento
for update
as
declare @tipo as smallint
declare @insumo as integer
declare @oldcantidad as numeric
declare @newcantidad as numeric

begin
select
@tipo = tipomovimiento,
@insumo = idinsumo,
@oldcantidad = cantmovimiento
from deleted
select
@newcantidad = cantmovimiento
from inserted
if update (cantmovimiento)
if @tipo= 1
update saldo set entradas = (entradas - @oldcantidad) + @newcantidad,
saldos = (saldos - @oldcantidad) + newcantidad
where idinsumo= @insumo
else
update saldo set salidas = (salidas - @oldcantidad) + @newcantidad,
saldos = (saldos + @oldcantidad) - @oldcantidad where idinsumo= @insumo
end
end
end

Servidor: mensaje 156, nivel 15, estado 1, procedimiento actsaldo, línea 27
Sintaxis incorrecta cerca de la palabra clave 'end'.


me tira ese error he probado con borrar un end y hacer otros cambios pero no me resulta, soy nuevo en construcción de triggers ojala alguien me pueda orientar en el tema, gracias de antemano !!
  #2 (permalink)  
Antiguo 13/07/2010, 17:28
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Ayuda con Trigger - Sintaxis

Prueba asi:
Código SQL:
Ver original
  1. CREATE TRIGGER actsaldo ON detmovimiento
  2. FOR UPDATE
  3. AS
  4. BEGIN
  5.  
  6. DECLARE @tipo AS SMALLINT
  7. DECLARE @insumo AS INTEGER
  8. DECLARE @oldcantidad AS NUMERIC
  9. DECLARE @newcantidad AS NUMERIC
  10.  
  11. SELECT @tipo = tipomovimiento,@insumo = idinsumo,@oldcantidad = cantmovimiento
  12. FROM deleted
  13.  
  14. SELECT @newcantidad = cantmovimiento
  15. FROM inserted
  16.  
  17. IF UPDATE (cantmovimiento)
  18.     IF @tipo= 1
  19.         UPDATE saldo SET entradas = (entradas - @oldcantidad) + @newcantidad, saldos = (saldos - @oldcantidad) + newcantidad
  20.         WHERE idinsumo= @insumo
  21.     ELSE
  22.         UPDATE saldo SET salidas = (salidas - @oldcantidad) + @newcantidad,saldos = (saldos + @oldcantidad) - @oldcantidad
  23.         WHERE idinsumo= @insumo
  24.  
  25. END
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.

Etiquetas: sintaxis, trigger
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:08.