Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: rixi15 en 20 Mayo 2012, 20:58 pm



Título: PROBLEMA TRIGGERS ORACLE SQL
Publicado por: rixi15 en 20 Mayo 2012, 20:58 pm
Hola, tengo un problema y es como crear un trigger que compruebe si existe una tupla (id1,id2) en otra tabla, para asi evitar que se inserte esa tupla en la tabla donde pongo el trigger. He buscado pero no he encontrado nada. Muchas gracias.


Título: Re: PROBLEMA TRIGGERS ORACLE SQL
Publicado por: Saberuneko en 23 Mayo 2012, 16:57 pm
No te voy a hacer los deberes, pero sí te daré una orientación inicial.

Necesitas un TRIGGER del tipo "BEFORE insert on TABLA"

Código:
create or replace trigger <nombre>
before insert on <tabla>
for each row

Dentro del mismo deberás poner una consulta que compruebe si existe dicha tupla.
Ya sea porque se duplica la clave, o algún campo adicional junto a la misma.

Código:
if new.<campo1> = <consulta1> and [...] and new.<campon> = <consultan> then

Si existe, haz un RAISE_APPLICATION_ERROR con el mensaje de error que indique que no se pueden introducir tuplas duplicadas. Esto hará que se muestre el mensaje y se cancele la inserción del nuevo registro.

Código:
RAISE_APPLICATION_ERROR(<code>,<mensaje>)

Ahora es cosa tuya pensar qué consulta y campos utilizar.
(Tampoco podría detallar más, sin saber qué tablas tienes).

Un Saludo.