estimados:

estoy trabajando ahce poco con postgreSQL. y me surgio un problema que no
puedo solucionar:

tengo dos tablas, realacionadas mediante una FK de la siguiente manera:

A          B
ID         |------>ID
DatoA | DATO1
DatoB |
DatoC |
ID_B---------|

arme una vista que tiene la siguiente estructura:
SELECT A.ID, A.DatoA, A.DatoB, A.DatoC, B.Dato1
FROM A JOIN B ON A.ID_B = B.ID

el problema viene cuando quiero armar las reglas que hagan que se pueda
inserta en la vista.
si la regla consta de un solo insert funciona, ahora, la regla que defini
para el caso de querer insertar un valor de Dato1 que no este en B, inserta
en B, pero no hace el insert en A.
es una limitacion de las reglas? o estoy armandolas mal?

CREATE OR REPLACE RULE insert_nuevo_Dato1 AS
    ON INSERT TO vista_AB
   WHERE NOT (new.Dato1 IN ( SELECT Dato1
           FROM B))
DO INSTEAD (
INSERT INTO B (Dato1)
  VALUES (new.Dato1);

 INSERT INTO A (ID, DatoA, DatoB, DatoC)
  VALUES (new.ID, new.DatoA, new.DatoB, new.DatoC);
);

buscando encontre que la herramienta que estaba utilizando(pgAdmin III)
tiene un bug que no permite agregar multiples sentencias en una regla, por
lo que tuve que crearla mediante psql. pero aun asi, el 2ยบ insert sigue sin
ejecutarse.


lo que quiero hacer no se puede hacer mediante reglas? o me estoy
equivocando en algo?

muchas gracias por su atencion.
Javier Rotelli

Responder a