Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

Regla sobre una vista insertando

Estas en el tema de Regla sobre una vista insertando en el foro de PostgreSQL en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 11/06/2013, 10:45
 
Fecha de Ingreso: marzo-2013
Mensajes: 11
Antigüedad: 11 años
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.

Etiquetas: principiante, reglas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:39.