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

Error al querer hacer un trigger con la función max()

Estas en el tema de Error al querer hacer un trigger con la función max() en el foro de SQL Server en Foros del Web. Saludos a todos y felices fiestas! Estoy trasteando con los triggers ya que nunca he hecho uno y me interesa aprender. Bien, tengo dos tablas ...
  #1 (permalink)  
Antiguo 05/01/2013, 05:31
 
Fecha de Ingreso: julio-2011
Mensajes: 17
Antigüedad: 12 años, 9 meses
Puntos: 0
Error al querer hacer un trigger con la función max()

Saludos a todos y felices fiestas!

Estoy trasteando con los triggers ya que nunca he hecho uno y me interesa aprender.

Bien, tengo dos tablas BICICLETA y RECORRIDO, y quiero que al crear en la base de datos un nuevo registro en la tabla RECORRIDO, el trigger coja el numero de KM que tiene el nuevo recorrido y se añada en la tabla BICICLETA dentro de la Bicicleta que corresponda.

El problema viene cuando quiero obtener el ID de la bicicleta cogiendo el ultimo registro que se ha introducido en la tabla recorrido, ya que me da fallo al crear el trigger y me salta el siguiente mensaje:

'No puede aparecer un agregado en la cláusula WHERE si no es en una subconsulta contenida en una cláusula HAVING o en una lista de selección, y siempre que la columna agregada sea una referencia externa.'


La sentencia que tengo es la siguiente:

CREATE TRIGGER ACTUALIZACION_KILOMETROS11
ON RECORRIDO
AFTER INSERT
AS
BEGIN
UPDATE BICICLETA
SET KILOMETROS = KILOMETROS + NUMERO_KILOMETROS
FROM RECORRIDO
WHERE BICICLETA.ID_BICICLETA=RECORRIDO.ID_BICICLETA AND RECORRIDO.FECHA_RECORRIDO = MAX(RECORRIDO.FECHA_RECORRIDO);
END;

Veis algo mal? puede que este metiendo la pata hasta el fondo ya que soy novato en los triggers pero me estoy volviendo loco y no sé por que me puede petar.

Un abrazo y gracias anticipadas!
  #2 (permalink)  
Antiguo 05/01/2013, 08:26
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 9 meses
Puntos: 40
Respuesta: Error al querer hacer un trigger con la función max()

Intentá así:
Código SQL:
Ver original
  1. UPDATE BICICLETA
  2. SET KILOMETROS = KILOMETROS + NUMERO_KILOMETROS
  3. FROM (SELECT      MAX(FECHA_RECORRIDO) OVER() Mx_FR,
  4.                            *
  5.            FROM        RECORRIDO)
  6. WHERE RECORRIDO.ID_BICICLETA IN (SELECT ID_BICICLETA FROM BICICLETA)
  7.            AND RECORRIDO.FECHA_RECORRIDO = Mx_FR;
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
  #3 (permalink)  
Antiguo 05/01/2013, 22:29
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Error al querer hacer un trigger con la función max()

Lo que veo MAL es que lo quieras hacer en un trigger y no en el store procedure que ataca la tabla.
__________________
MCTS Isaias Islas

Etiquetas: registro, tabla, 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 00:39.