Obrigado a todos pelas vossas dicas.
Fiz isso, retirei a parte de criação de colunas da função e agora não salta
nenhum erro.
No entanto seria de esperar que quando um polígono fosse editado o campo
área fosse actualizado e isso não acontece.
Alguém me sabe dizer o que é que está mal?
CREATE
A trigger é BEFORE? Caso contrário não atualiza mesmo.
--
Matheus de Oliveira
Bacharelado em Ciências de Computação
Laboratório de Computação de Alto Desempenho -
LCADhttp://www.lcad.icmc.usp.br/
Instituto de Ciências Matemáticas e de Computação -
ICMChttp://www.icmc.usp.br/
Universidade de São
Sim, não está bem assim?
CREATE TRIGGER trg_postfire_study_area_UPDATE_dimensoes
BEFORE INSERT OR UPDATE
ON sch_forestal.postfire_study_area
FOR EACH ROW
EXECUTE PROCEDURE fun_dimensoes();
Eloi Ribeiro
GIS Analyst
39,45º -0,40º
flavors.me/eloiribeiro
No dia 20 de Março de 2012
Se você passar a trigger para AFTER ao invés de BEFORE suas chances de não
ter lock aumentam, mas não desaparecem. Analisando por cima suas
necessidades, não acredito que a melhor solução seja realmente adicionar
uma coluna em uma trigger, isso me parece uma tarefa administrativa, ou
seja, sempre
Cancelando as demais transações/conexões também resolve seu problema
*se, e somente se* isto não for um problema no seu cenário.
Minha experiência com DDL dentro de funções é de resultado sempre inesperado.
Se a função é específica para ser executada em horário controlado,
geralmente é uma mão
O melhor será separar esta função em duas:
A primeira que verifique se os campos existem e se não os criam.
E a segunda como disparador para que se actualizem com os inserts e updates.
Obrigado pela ajuda!
Eloi Ribeiro
GIS Analyst
39,45º -0,40º
flavors.me/eloiribeiro
No dia 16 de Março de 2012
Antes de nada obrigada pela vossas respostas.
Efectivamente, Flavio, o esquema tg_table_schema não existe. Só depois
buscando um pouco mais encontrei que tinha de por a sentencia SQL ALTER
TABLE assim:
EXECUTE 'ALTER TABLE ' || quote_ident(esquema) || '.' ||
quote_ident(tabela) || ' ADD COLUMN
Em 15 de março de 2012 07:19, Eloi Ribeiro eloi.ribe...@gmail.com escreveu:
ERROR: no se puede hacer ALTER TABLE en «postfire_study_area» porque está
siendo usada por consultas activas en esta sesión
A mensagem é clara: não se pode fazer um ALTER TABLE sobre uma tabela
que está sendo
Ola a todos,
Estou a fazer a seguinte função para que me actualize o campo 'area' cada
vez que exista um INSERT ou UPDATE numa tabela.
O problema está que o campo 'area' pode não existir e gostava que nesse
caso o campo seja criado e preenchido para todos os registos.
Como tenho salta-me o erro
Quando edito a geometria salta o seguinte erro:
ERROR: no existe el esquema «tg_table_schema»
CONTEXTO: sentencia SQL: «ALTER TABLE TG_TABLE_SCHEMA.TG_TABLE_NAME ADD
COLUMN area bigint»
O erro é claro (embora em espanhol, língua que não domino):
Não existe o esquema tg_table_schema.
Existe
Em 12 de março de 2012 07:11, Eloi Ribeiro eloi.ribe...@gmail.com escreveu:
Ola a todos,
Estou a fazer a seguinte função para que me actualize o campo 'area' cada
vez que exista um INSERT ou UPDATE numa tabela.
O problema está que o campo 'area' pode não existir e gostava que nesse caso
o
Bem, já consegui alguns progressos com a função.
No entanto tenho o seguinte erro:
ERROR: no se puede hacer ALTER TABLE en «postfire_study_area» porque está
siendo usada por consultas activas en esta sesión
CONTEXTO: sentencia SQL: «ALTER TABLE sch_forestal.postfire_study_area ADD
COLUMN area
12 matches
Mail list logo