2008/9/16 Mozart Hasse <[EMAIL PROTECTED]>

> Olá William,
>
> (...)
> Eu cogitei essa opção, porém não sei se ela pode ser usada no meu caso
> específico:
>
> http://www.postgresql.org/docs/8.3/static/rules-triggers.html
>
> "If checks for valid values are required, and in the case of an invalid
> value
> an error message should be generated, it must be done by a trigger."
>
> O problema é que no meio das minhas triggers eu *tenho* validações que
> podem gerar mensagens de erro, logo não sei se essa opção seria viável no
> meu caso.
>

    Bom, quando eu usei rules em views que eram simplesmente copias da
tabela original, as mesmas eram :

CREATE RULE [nome] AS ON INSERT TO [nome view] DO INSTEAD INSERT INTO
[tabela original](COALESCE(new.[campo1],
DEFAULT),COALESCE(new.[campo2],DEFAULT),...);

     E funcionavam certinho. Item para ocaso do update. Havia a facilidade
de um ID de registro nunca poder ser alterado. Assim "... DO INSTEAD UPDATE
[tabela original] SET [campo1] = new.[campo1] ... WHERE ID = new.[ID] sempre
funcionava.

     Na verdade, obviamente, eu tinha funções para criar as regras...


>
> Outro inconveniente é que rules se aplicam sobre comandos inteiros, não
> sobre atualizações registro a registro. Mudar a lógica da trigger/stored
> procedure para trabalhar sobre o comando ao invés de trabalhar sobre
> registros da tabela seria uma mudança extremamente radical, cujas
> implicações no desempenho me preocupam bastante.
>

      Bom, acho que o dito acima contesta essa afirmação. Não precisa
alterar seus triggers, desde que estejam na tabela original...

-- 
William Leite Araújo
Analista de Banco de Dados - QualiConsult
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a