devAngnew
21-01-2009, 12:00
Ciao raga sperò di avere qualche info poichè non so come far effettuare un update ad una view attraverso le rule.
ecco un esempio:
create table emp (
empno int ,
ename char(20),
job char(12),
hiredate date,
sal money,
comm int,
deptno int,
livello int,
mgr int,
PRIMARY KEY (empno)
);
insert into emp values (7499,'ALLEN', 'SALESMAN', '20-FEB-81', '€1600', 300, 20,1,null);
insert into emp values (7698,'BLAKE', 'MANAGER', '01-MAY-81', '€2850',NULL, 30,4,null);
insert into emp values (7900,'JONES', 'CLERK', '03-DEC-81', '€0950',NULL, 30,6,null);
insert into emp values (7901,'KING', 'SALESMAN', '03-DEC-81', '€1950',NULL, 30,10,null);
create view vista
as select empno, ename, job
from emp
where job='SALESMAN';
create rule "_UPDvista" as on update to vista
WHERE new.job='SALESMAN'
do instead
update emp set empno=new.empno, ename=new.ename,job=new.job
where empno=OLD.empno;
update vista set empno=1234 WHERE ename='ALLEN';
ERROR: cannot update a view
HINT: You need an unconditional ON UPDATE DO INSTEAD rule.
Il fatto è che la rule per l'update la costruisce ma a runtime mi dà l'errore che potete vedere.
MI potete aiutare non ho trovato niente che spieghi questa cosa in rete.
:help:
ecco un esempio:
create table emp (
empno int ,
ename char(20),
job char(12),
hiredate date,
sal money,
comm int,
deptno int,
livello int,
mgr int,
PRIMARY KEY (empno)
);
insert into emp values (7499,'ALLEN', 'SALESMAN', '20-FEB-81', '€1600', 300, 20,1,null);
insert into emp values (7698,'BLAKE', 'MANAGER', '01-MAY-81', '€2850',NULL, 30,4,null);
insert into emp values (7900,'JONES', 'CLERK', '03-DEC-81', '€0950',NULL, 30,6,null);
insert into emp values (7901,'KING', 'SALESMAN', '03-DEC-81', '€1950',NULL, 30,10,null);
create view vista
as select empno, ename, job
from emp
where job='SALESMAN';
create rule "_UPDvista" as on update to vista
WHERE new.job='SALESMAN'
do instead
update emp set empno=new.empno, ename=new.ename,job=new.job
where empno=OLD.empno;
update vista set empno=1234 WHERE ename='ALLEN';
ERROR: cannot update a view
HINT: You need an unconditional ON UPDATE DO INSTEAD rule.
Il fatto è che la rule per l'update la costruisce ma a runtime mi dà l'errore che potete vedere.
MI potete aiutare non ho trovato niente che spieghi questa cosa in rete.
:help: