
Ayuda para un trigger de validación de herencia en 3 tablas
Publicado por Pablo (2 intervenciones) el 10/05/2015 03:23:25
Buenas.
Tengo un diseño de una base de datos que contiene una herencia a 3 tablas (una tabla llamada articulos es la tabla "padre" y las otras dos tablas que son el tipo de articulo, son sus hijos).
He creado un trigger para impedir que pueda insertar el identificador del articulo de la tabla padre (heredado a los hijos como PF) en las dos tablas a la vez. Este es el código de mi trigger:
Ahora, cuando voy a insertar un idarticulo en la tabla pauxilio (una de las tablas hija) no me deja si este idarticulo está ya en la tabla otros (la otra tabla hija), pero tampoco me deja aunque no esté, ya que existe un error de tipo no_data_found. Se que mi error reside en el select into, ya que si el idarticulo no está en la tabla otros mi select no saca ningún valor y el programa se rompe. Ahora bien, me gustaria saber si existe algún modo de rsolver esto ya que ami no se me ocurre nada.
un saludo y gracias.
Tengo un diseño de una base de datos que contiene una herencia a 3 tablas (una tabla llamada articulos es la tabla "padre" y las otras dos tablas que son el tipo de articulo, son sus hijos).
He creado un trigger para impedir que pueda insertar el identificador del articulo de la tabla padre (heredado a los hijos como PF) en las dos tablas a la vez. Este es el código de mi trigger:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
create or replace trigger t_pauxilios
before insert or update on pauxilios
for each row
declare
v_articulo int;
begin
select idarticulo into v_articulo
from otros
where idarticulo = :new.idarticulo;
if v_articulo = :new.idarticulo then
raise_application_error(-20001, 'Este articulo pertenece a la tabla otros');
end if;
end;
Ahora, cuando voy a insertar un idarticulo en la tabla pauxilio (una de las tablas hija) no me deja si este idarticulo está ya en la tabla otros (la otra tabla hija), pero tampoco me deja aunque no esté, ya que existe un error de tipo no_data_found. Se que mi error reside en el select into, ya que si el idarticulo no está en la tabla otros mi select no saca ningún valor y el programa se rompe. Ahora bien, me gustaria saber si existe algún modo de rsolver esto ya que ami no se me ocurre nada.
un saludo y gracias.
Valora esta pregunta


0