EDITO: El problema es con la funcion MAX, no con COUNT.
Saludos laneros:
Estoy trabajando en mysql 5 (creo que es la 5.0.1) y estoy utilizando algunos triggers para realizar ciertas cosas que necesito. En uno de los triggers (trigger before insert) tengo una serie de instrucciones como:
La idea con lo anterior es que cada vez que se inserte un registro en la tabla X, se busque cual es el valor máximo del campo "numero" que tiene el id_x igual al id_x del registro que se esta insertando.
Si uso el mysql query browser para insertar registros, el trigger funciona de maravilla y hace lo que necesito, pero cuando lo hago desde mi programa Java (JSP) me saca un error si no existe al menos 1 registro con el valor de id_x especificado, es decir, cuando la instruccion "SELECT MAX ..." no retorna ningun registro. El error es el siguiente:
ERROR 1329 - No data - zero rows fetched, selected, or processed
Si quito la instruccion donde uso la funcion MAX, el programa no me da errores en ningun momento, pero no cumple lo que necesito.Tambien intente de la siquiente forma y el resultado fue exactamente el mismo ...
Algun lanero experto puede ayudarme?... como puedo tratar el caso especial cuando la instruccion SELECT no arroja ningun registro? .... o existe una mejor alternativa para lograr lo que deseo??
Muchas gracias de antemano!!
Saludos laneros:
Estoy trabajando en mysql 5 (creo que es la 5.0.1) y estoy utilizando algunos triggers para realizar ciertas cosas que necesito. En uno de los triggers (trigger before insert) tengo una serie de instrucciones como:
Código:
SET @c = 0;
SELECT MAX(numero) INTO @c FROM tabla_x WHERE id_x = NEW.id_x GROUP BY id_x;
SET NEW.numero = @c + 1;
La idea con lo anterior es que cada vez que se inserte un registro en la tabla X, se busque cual es el valor máximo del campo "numero" que tiene el id_x igual al id_x del registro que se esta insertando.
Si uso el mysql query browser para insertar registros, el trigger funciona de maravilla y hace lo que necesito, pero cuando lo hago desde mi programa Java (JSP) me saca un error si no existe al menos 1 registro con el valor de id_x especificado, es decir, cuando la instruccion "SELECT MAX ..." no retorna ningun registro. El error es el siguiente:
ERROR 1329 - No data - zero rows fetched, selected, or processed
Si quito la instruccion donde uso la funcion MAX, el programa no me da errores en ningun momento, pero no cumple lo que necesito.Tambien intente de la siquiente forma y el resultado fue exactamente el mismo ...
Código:
SET @c = 0;
SELECT MAX(numero) INTO @c FROM tabla_x WHERE id_x = NEW.id_x GROUP BY id_x;
IF ISNULL(@c) THEN
SET @c = 0;
END IF;
SET NEW.numero = @c + 1;
Algun lanero experto puede ayudarme?... como puedo tratar el caso especial cuando la instruccion SELECT no arroja ningun registro? .... o existe una mejor alternativa para lograr lo que deseo??
Muchas gracias de antemano!!