驴Como hacer un SELECT dentro de un trigger?
Hola. Trabajo en SYBASE y tengo problemas con un trigger. Cuando se hace una inserci贸n en una tabla 1, el trigger realiza a su vez un insert en una tabla 2. El problema viene cuando tengo que modificar el trigger para que solo haga la inserci贸n en la tabla 2 en funci贸n de unas condiciones.
Para evaluar estas condiciones, me veo obligado a hacer una consulta de tipo:
select 1
from tabla3
where param=valor
Si se obtienen resultados, no se hace inserci贸n en la tabla 2.
El error que me da es:
java.sql.SQLException: JZ0P1: Unexpected result type.
Cualquier idea es bienvenida...
Para evaluar estas condiciones, me veo obligado a hacer una consulta de tipo:
select 1
from tabla3
where param=valor
Si se obtienen resultados, no se hace inserci贸n en la tabla 2.
El error que me da es:
java.sql.SQLException: JZ0P1: Unexpected result type.
Cualquier idea es bienvenida...
Se me olvidaba, he probado tambi茅n a meter esa consulta dentro de un procedimiento almacenado y llamar a la ejecuci贸n de ese procedimiento almacenado desde el trigger, pero en ese caso el error es:
com.sybase.jdbc.SybSQLException: Stored procedure 'dbo.COMPRUEBA_LISTA' may be run only in unchained transaction mode. The 'SET CHAINED OFF' command will cause the current session to use unchained transaction mode.
com.sybase.jdbc.SybSQLException: Stored procedure 'dbo.COMPRUEBA_LISTA' may be run only in unchained transaction mode. The 'SET CHAINED OFF' command will cause the current session to use unchained transaction mode.
OK, ya lo he solucionado mediante un cursor. Este es el c贸digo:
begin
select @lista = 0
declare csrCONSULTA cursor for
SELECT 1 FROM TABLA_A
WHERE campo_A = variable_A
UNION
SELECT 1 FROM TABLA_B
WHERE campo_B = variable_B
open csrCONSULTA
fetch csrCONSULTA into @lista
close csrCONSULTA
end
begin
select @lista = 0
declare csrCONSULTA cursor for
SELECT 1 FROM TABLA_A
WHERE campo_A = variable_A
UNION
SELECT 1 FROM TABLA_B
WHERE campo_B = variable_B
open csrCONSULTA
fetch csrCONSULTA into @lista
close csrCONSULTA
end
