Ir para conteúdo
Fórum Script Brasil
  • 0

Erro ao executar vários deletes


bruno.sdo

Pergunta

Olá Pessoal, 

Esse é meu primeiro post.

Não tenho muito experiencia com PostgreSQL.

Estou fazendo a seguinte consulta para em seguida fazer alguns DELETES, porem esta dando erro.

DO $$DECLARE reserva_veiculo INTEGER[]; movimento_veiculo INTEGER[]; i INTEGER;
BEGIN
	  i:=0;
      reserva_veiculo :=  ARRAY (select r.id_reserva_veiculo
            from transporte.movimento_veiculo m 
            inner join transporte.reserva_veiculo r on (r.id_movimento_veiculo = m.id_movimento_veiculo)
            left  join requisicoes.requisicao_reserva_veiculo req on (req.id_reserva_veiculo = r.id_reserva_veiculo)
            inner join transporte.veiculo v on (v.id_veiculo = r.id_veiculo)
            where 
            --req.numero=21937
            v.placa = 'JKO-4601')::integer[];

      movimento_veiculo :=  ARRAY (select m.id_movimento_veiculo
            from transporte.movimento_veiculo m 
            inner join transporte.reserva_veiculo r on (r.id_movimento_veiculo = m.id_movimento_veiculo)
            left  join requisicoes.requisicao_reserva_veiculo req on (req.id_reserva_veiculo = r.id_reserva_veiculo)
            inner join transporte.veiculo v on (v.id_veiculo = r.id_veiculo)
            where 
            --req.numero=21937
            v.placa = 'JKO-4601')::integer[];


	FOR i in 1..array_length(reserva_veiculo,1) loop   		
        raise notice 'reserva_veiculo: %', reserva_veiculo[i];
		        
             delete from transporte.motorista_reserva  where motorista_reserva.id_reserva_veiculo= reserva_veiculo[i];
             delete from requisicoes.requisicao_reserva_veiculo r where r.id_reserva_veiculo= reserva_veiculo[i];
             delete from transporte.reserva_veiculo rv where rv.id_reserva_veiculo= reserva_veiculo[i];        
	end loop;
    
    i :=0;
    
    FOR i in 1..array_length(movimento_veiculo,1) loop
   		raise notice 'movimento_veiculo: %', movimento_veiculo[i];
              	 
             delete from transporte.movimento_veiculo_passageiro mv where mv.id_movimento_veiculo= movimento_veiculo[i];
             delete from transporte.trecho_percorrido mv1 where mv1.id_movimento_veiculo= movimento_veiculo[i];
             delete from transporte.movimento_veiculo mv2 where mv2.id_movimento_veiculo= movimento_veiculo[i];	    	 
	end loop;
END$$;



Porem está dando o seguinte erro:

ERROR:  permission denied for schema transporte
LINE 1: SELECT 1 FROM ONLY "transporte"."anexo_movimento_veiculo" x ...
                           ^
QUERY:  SELECT 1 FROM ONLY "transporte"."anexo_movimento_veiculo" x WHERE $1 OPERATOR(pg_catalog.=) "id_movimento_veiculo" FOR KEY SHARE OF x
CONTEXT:  SQL statement "delete from transporte.movimento_veiculo mv2 where mv2.id_movimento_veiculo= movimento_veiculo[i]"
PL/pgSQL function inline_code_block line 38 at SQL statement

Sim, tenho permissão para excluir. 

Se eu rodar somente as linhas dos deletes, substituindo as variáveis. A exclusão acontece sem erros.

 

Obrigado pela atenção 

Editado por bruno.sdo
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0
Em 01/10/2016 at 03:25, bruno.sdo disse:

Olá Pessoal, 

Esse é meu primeiro post.

Não tenho muito experiencia com PostgreSQL.

Estou fazendo a seguinte consulta para em seguida fazer alguns DELETES, porem esta dando erro.


DO $$DECLARE reserva_veiculo INTEGER[]; movimento_veiculo INTEGER[]; i INTEGER;
BEGIN
	  i:=0;
      reserva_veiculo :=  ARRAY (select r.id_reserva_veiculo
            from transporte.movimento_veiculo m 
            inner join transporte.reserva_veiculo r on (r.id_movimento_veiculo = m.id_movimento_veiculo)
            left  join requisicoes.requisicao_reserva_veiculo req on (req.id_reserva_veiculo = r.id_reserva_veiculo)
            inner join transporte.veiculo v on (v.id_veiculo = r.id_veiculo)
            where 
            --req.numero=21937
            v.placa = 'JKO-4601')::integer[];

      movimento_veiculo :=  ARRAY (select m.id_movimento_veiculo
            from transporte.movimento_veiculo m 
            inner join transporte.reserva_veiculo r on (r.id_movimento_veiculo = m.id_movimento_veiculo)
            left  join requisicoes.requisicao_reserva_veiculo req on (req.id_reserva_veiculo = r.id_reserva_veiculo)
            inner join transporte.veiculo v on (v.id_veiculo = r.id_veiculo)
            where 
            --req.numero=21937
            v.placa = 'JKO-4601')::integer[];


	FOR i in 1..array_length(reserva_veiculo,1) loop   		
        raise notice 'reserva_veiculo: %', reserva_veiculo[i];
		        
             delete from transporte.motorista_reserva  where motorista_reserva.id_reserva_veiculo= reserva_veiculo[i];
             delete from requisicoes.requisicao_reserva_veiculo r where r.id_reserva_veiculo= reserva_veiculo[i];
             delete from transporte.reserva_veiculo rv where rv.id_reserva_veiculo= reserva_veiculo[i];        
	end loop;
    
    i :=0;
    
    FOR i in 1..array_length(movimento_veiculo,1) loop
   		raise notice 'movimento_veiculo: %', movimento_veiculo[i];
              	 
             delete from transporte.movimento_veiculo_passageiro mv where mv.id_movimento_veiculo= movimento_veiculo[i];
             delete from transporte.trecho_percorrido mv1 where mv1.id_movimento_veiculo= movimento_veiculo[i];
             delete from transporte.movimento_veiculo mv2 where mv2.id_movimento_veiculo= movimento_veiculo[i];	    	 
	end loop;
END$$;



Porem está dando o seguinte erro:


ERROR:  permission denied for schema transporte
LINE 1: SELECT 1 FROM ONLY "transporte"."anexo_movimento_veiculo" x ...
                           ^
QUERY:  SELECT 1 FROM ONLY "transporte"."anexo_movimento_veiculo" x WHERE $1 OPERATOR(pg_catalog.=) "id_movimento_veiculo" FOR KEY SHARE OF x
CONTEXT:  SQL statement "delete from transporte.movimento_veiculo mv2 where mv2.id_movimento_veiculo= movimento_veiculo[i]"
PL/pgSQL function inline_code_block line 38 at SQL statement

Sim, tenho permissão para excluir. 

Se eu rodar somente as linhas dos deletes, substituindo as variáveis. A exclusão acontece sem erros.

 

Obrigado pela atenção 

 

Não.. você não tem permissão: 

ERROR:  permission denied for schema transporte

 

Rode o comando como usuário "postgres" para testar. Depois dê permissões adequadas ao usuário que você está utilizando.

 

 

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...