Disparador SQL Server 2008

erdanblo

Estoy intentando lanzar un disparador cuando se actualice un campo.

Consiste en una lista de precios, que al actualizarse el precio, se comprueba si el nuevo precio modificado es superior a 1€, se registra esa modificación en otra tabla.

El código es este:

USE [PUBS]
GO
/****** Object:  Trigger [dbo].[DSubidaPrecios]    Script Date: 03/10/2009 20:27:46 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER TRIGGER [dbo].[DSubidaPrecios]
   ON  [dbo].[TLISTA_PRECIOS]
   AFTER INSERT,UPDATE
AS 
BEGIN
	SET NOCOUNT ON;
	
DECLARE @PRECIO_NUEVO NUMERIC(8,2)
DECLARE @NOMBRE_CERVEZA VARCHAR(50)
DECLARE @BAR VARCHAR(50)

DECLARE @FECHA DATETIME;

SET @PRECIO_NUEVO = (SELECT PRECIO FROM UPDATED)
SET @NOMBRE_CERVEZA = (SELECT NOMBRE_CERVEZA FROM UPDATED)
SET @BAR = (SELECT nombre_bar FROM UPDATED)

SET @FECHA = GETDATE()

DECLARE @DIF_PRECIOS NUMERIC(8,2)

SET @DIF_PRECIOS = @PRECIO_NUEVO - (SELECT precio FROM tlista_precios 
									WHERE (nombre_cerveza = @NOMBRE_CERVEZA
										AND
											nombre_bar = @BAR)
									)
IF UPDATE (PRECIO)
BEGIN								
	IF @DIF_PRECIOS > 1
	BEGIN
		INSERT INTO TSUBIDAS_PRECIOS VALUES (@BAR,@NOMBRE_CERVEZA,@PRECIO_NUEVO,@FECHA)
		PRINT 'HOLA'
	END
END
									
END

También lo he subido a pastebin:
http://mv.pastebin.com/f394536b0

Tengo dudas aquí:

	SET @PRECIO_NUEVO = (SELECT PRECIO FROM UPDATED)
	SET @NOMBRE_CERVEZA = (SELECT NOMBRE_CERVEZA FROM UPDATED)
	SET @BAR = (SELECT nombre_bar FROM UPDATED)

Antes, en vez de UPDATED tenía INSERTED y no me lanzaba ningún error (pero tampoco me lanzaba el INSERT INTO en la otra tabla), y con UPDATED cuando intento actualizar me sale un error.

Usuarios habituales

  • erdanblo