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.