Caro "biozit", Eu fiz da seguinte forma, vou usar um exemplos simples aqui porque não tenho mais acesso ao problema real, e também não sei se é a melhor forma de se fazer isso mas comigo funcionou.
Eu tenho duas tabelas (enfatizo novamente que é um exemplo hipotético no exemplos real os campos a serem tratado eram campos data e não varchar como aqui): teste1(id serial NOT NULL, nome varchar(40), data date, numero int2 DEFAULT 0, total int2) teste2(id serial NOT NULL, nome varchar(40)) Foi necessário criar uma VIEW que unisse os dois campos nomes das duas tabelas que ficou assim: CREATE OR REPLACE VIEW vw_teste AS SELECT teste.nome AS um, teste2.nome AS dois FROM teste, teste2; Até aqui tudo bem só que o programador queria atualizar através da VIEW só que toda atualização sem a RULE gerava a seguinte mensagem. ERROR: cannot update a view HINT: You need an unconditional ON UPDATE DO INSTEAD rule. Assim depois de muito quebrar a cabeça crier uma RULE para a VIEW da seguinte forma create rule rl_teste1 AS ON UPDATE TO vw_teste do instead update teste2 set nome=NEW.dois where nome=OLD.dois O que essa rule faz: update vw_teste set dois='paolo' where dois='fellipo' Ele sabe que toda vez que eu atualizar o campo dois da VIEW este é referente ao campo nome da tabela teste2 e faz a atulização direto na tabela. Para criar a rule de UPDATE para o campo UM basta alterar a RULE de dois para um. É claro que isso que criei aqui é um exemplo longe da realidade mas dá para visualizar o raciocínio que usei. Não sei se é o mais adequado mas na época ajudou bastante. A lógica para insert e delete é a mesma. No manual em PDF que peguei no sourceforge as páginas referentes ao assunto são: 549 até 554 capítulo 33. Espero ter ajudado. Abraços Paolo Bordoni -----Mensagem original----- De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Em nome de biozit Enviada em: terça-feira, 12 de dezembro de 2006 08:33 Para: Grupo de Usuários do PostgreSQL no Brasil Assunto: Re: [PostgreSQL-Brasil] RES: update em view marcos...como foi essa rule que vc criou..como é logica disso ? achei bem legal! Paolo Bordoni Caldeira escreveu: > Caro Marcos, > > Uma vez eu também estava com o mesmo problema que o seu não conseguia nem > usar o UPDATE como tb o DELETE isso acontecia no meu justa pelo faot que o > BIOZIT disse o postgre não sabia qual tabela executar então depois de muito > quebrar a cabeça descobri que teria como fazer criando uma RULE (regra) se > possível dá uma lida no capítulo de RULES do manual do Postgres eu não sei > qual é o link porque eu uso a ersão em PDF mas lá tem exemplos que poderão > te ajudar. > > Abraços > > Paolo > > -----Mensagem original----- > De: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] Em nome de biozit > Enviada em: segunda-feira, 11 de dezembro de 2006 10:54 > Para: Grupo de Usuários do PostgreSQL no Brasil > Assunto: Re: [PostgreSQL-Brasil] update em view > > dar update em view nun é muito aconselhavel....pois as vezes o SGBD nun > sabe de qual tabela e da onde é em views mais complexas..... > > > Osvaldo Rosario Kussama escreveu: > >> Marcos Fabrício Corso escreveu: >> >> >>> nao estou conseguindo criar uma view com o seguinte comando >>> >>> update cliente set numero '123' where numero = '' ; >>> >>> me o pgadmin me retorna que a sntaxe update esta incorreta >>> >>> o que pode ser ... >>> >>> >>> >> View com um comando UPDATE ?!?! >> >> Veja a definição de view em: >> http://www.postgresql.org/docs/8.1/interactive/sql-createview.html >> >> CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] VIEW name [ ( column_name [, >> ...] ) ] AS query >> >> onde: >> query >> A query (that is, a SELECT statement) which will provide the >> columns and rows of the view. >> >> >> []s >> Osvaldo >> >> >> >> _______________________________________________________ >> Novidade no Yahoo! Mail: receba alertas de novas mensagens no seu celular. >> > Registre seu aparelho agora! > >> http://br.mobile.yahoo.com/mailalertas/ >> >> >> _______________________________________________ >> Grupo de Usuários do PostgreSQL no Brasil >> Antes de perguntar consulte o manual >> http://pgdocptbr.sourceforge.net/ >> >> Para editar suas opções ou sair da lista acesse a página da lista em: >> http://pgfoundry.org/mailman/listinfo/brasil-usuarios >> >> >> > > > -- Fabio "biozit" Andrijauskas EU SEI VOAR!! _______________________________________________ Grupo de Usuários do PostgreSQL no Brasil Antes de perguntar consulte o manual http://pgdocptbr.sourceforge.net/ Para editar suas opções ou sair da lista acesse a página da lista em: http://pgfoundry.org/mailman/listinfo/brasil-usuarios _______________________________________________ Grupo de Usuários do PostgreSQL no Brasil Antes de perguntar consulte o manual http://pgdocptbr.sourceforge.net/ Para editar suas opções ou sair da lista acesse a página da lista em: http://pgfoundry.org/mailman/listinfo/brasil-usuarios
