Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/06/2013, 10:45
CorreoPedro
 
Fecha de Ingreso: marzo-2013
Mensajes: 11
Antigüedad: 11 años, 1 mes
Puntos: 0
Pregunta Regla sobre una vista insertando

Buenas amigos les comento que estoy empezando en lo que es base de datos y me salio una duda en cierto error que ya le busque pero no encuentro

cree una vista que esta formada por 3 tablas,haora cree una regla que cuando traten de insertar en esa vista se inserte en las 3 tablas que esta conformada mi vista,
primero lo ise junto y despues ise 3 reglas separados y me sigue saliendo este error

Necesita un regla incondicional ON INSERT DO INSTEAD o un disparador INSTEAD OF INSERT

Aqui mi vista:

CREATE view altasCliente AS
SELECT p.rfcpersona,nombre,segundn,appaterno,apmaterno,ed ad,colonia,municipio,estado,calle,cp,telefono,idcl iente
FROM persona p,direccion d,telefono t,cliente c
where p.rfcpersona=d.rfcpersona and p.rfcpersona=t.rfcpersona and p.rfcpersona=c.rfcpersona;


Aqui mi regla


CREATE OR REPLACE RULE insertarPersona AS
ON INSERT TO altasCliente
where NEW.rfcpersona IS NULL
DO INSTEAD(
INSERT INTO persona(rfcpersona,nombre,segundn,appaterno,apmate rno,edad)
VALUES(NEW.rfcpersona,NEW.nombre,NEW.segundn,NEW.a ppaterno,NEW.apmaterno,NEW.edad);

INSERT INTO direccion(rfcpersona,colonia,municipio,estado,call e,cp)
values(NEW.rfcpersona,NEW.colonia,NEW.municipio,NE W.estado,NEW.calle,NEW.cp);

INSERT INTO telefono(rfcpersona,telefono)
VALUES(NEW.rfcpersona,NEW.telefono);


INSERT INTO cliente(idcliente,rfcpersona)
VALUES(NEW.idcliente,NEW.rfcpersona);

);


y aparte los ise separados para ver si haci funcionaban pero nada






CREATE OR REPLACE RULE insertarP AS ON INSERT TO
altasCliente where NEW.rfcpersona is null DO INSTEAD(

INSERT INTO persona(rfcpersona,nombre,segundn,appaterno,apmate rno,edad)
VALUES(NEW.rfcpersona,NEW.nombre,NEW.segundn,NEW.a ppaterno,NEW.apmaterno,NEW.edad);
);

--/

CREATE OR REPLACE RULE insertarDireccion AS ON INSERT TO
altasCliente where NEW.rfcpersona is null DO INSTEAD(

INSERT INTO direccion(rfcpersona,colonia,municipio,estado,call e,cp)
values(NEW.rfcpersona,NEW.colonia,NEW.municipio,NE W.estado,NEW.calle,NEW.cp);

);



--//


CREATE OR REPLACE RULE insertarTelefono AS ON INSERT TO
altasCliente where NEW.rfcpersona is null DO INSTEAD(

INSERT INTO telefono(rfcpersona,telefono)
VALUES(NEW.rfcpersona,NEW.telefono);
);


CREATE OR REPLACE RULE insertarCliente AS ON INSERT TO
altasCliente where NEW.rfcpersona is null DO INSTEAD(

INSERT INTO cliente(idcliente,rfcpersona)
VALUES(NEW.idcliente,NEW.rfcpersona);
);




Haora inserto mis datos en la vista para ver si funcionan mis reglas

INSERT INTO altascliente(rfcpersona,nombre,segundn,appaterno,a pmaterno,edad,colonia,municipio,estado,calle,cp,te lefono,idcliente)
values(18191809,'Pedro','Juan','Perez','quintanila ',27,'Ejidal','Oaxaca','Oaxaca','VicenteGuerrero', 68140,'162-9787',128);



y me genera este error


ERROR: no se puede insertar en la vista «altascliente»
HINT: Necesita un regla incondicional ON INSERT DO INSTEAD o un disparador INSTEAD OF INSERT.