[pgbr-geral] SELEÇÃO DE UM REGISTRO
Pessoal Boa tarde, estou com a seguinte situação: Preciso limitar a quantidade de registro acessados por um determinado usuario fiz a seguinte function: CREATE or replace FUNCTION seleciona_tabela( bigint) returns tabela as $seleciona_tabela$ select * from tabela where id_tabela=$1 limit 1; $seleciona_tabela$ language sql Porem não gostaria de dar o grant de select para o usuario em tabela, pois somente assim a function funcionaria. Neste caso teria como resolver esta questão sem o grant de select em tabela? Obs!!! Tentei fazer isto criando uma view e limit 1 para tabela porem quando uso o where ele nao retorna o registro.Agora se eu não usar a view e for direto na tabela usando o where sem limit o registro é retornado.Será que isto pode ser um problema relacionado ao limit? Se alguem puder me ajudar eu agradeço. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] SELEÇÃO DE UM REGISTRO
2009/11/30 Tiago Valério tiagosvale...@gmail.com: corte Porem não gostaria de dar o grant de select para o usuario em tabela, pois somente assim a function funcionaria. Neste caso teria como resolver esta questão sem o grant de select em tabela? CREATE FUNCTION seleciona_tabela(...) RETURNS tabela LANGUAGE PLPGSQL AS $selection_tabela$ [] END; $selecion_tabela$ EXTERNAL SECURITY DEFINER; ^^^ Utilize a opção SECURITY na definição da procedure. Por outro lado, uma visão resolveria seu problema de forma mais simples. -Leo -- Leonardo Cezar http://www.aslid.org.br http://postgreslogia.wordpress.com http://www.dextra.com.br/postgres ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] SELEÇÃO DE UM REGISTRO
2009/11/30 Tiago Valério tiagosvale...@gmail.com: Boa tarde, estou com a seguinte situação: Preciso limitar a quantidade de registro acessados por um determinado usuario fiz a seguinte function: CREATE or replace FUNCTION seleciona_tabela( bigint) returns tabela as $seleciona_tabela$ select * from tabela where id_tabela=$1 limit 1; $seleciona_tabela$ language sql Porem não gostaria de dar o grant de select para o usuario em tabela, pois somente assim a function funcionaria. Neste caso teria como resolver esta questão sem o grant de select em tabela? Obs!!! Tentei fazer isto criando uma view e limit 1 para tabela porem quando uso o where ele nao retorna o registro.Agora se eu não usar a view e for direto na tabela usando o where sem limit o registro é retornado.Será que isto pode ser um problema relacionado ao limit? Creio que o que procura é SECURITY DEFINER. http://www.postgresql.org/docs/current/interactive/sql-createfunction.html Isto é, executar a função com os privilégios de quem criou a função e não de quem está executando a função. Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] SELEÇÃO DE UM REGISTRO
Leo Obrigado pela ajuda e aproveitando, para colocar em pratica os conhecimentos adquiridos. Tentei com a criação da view e definindo limit 1.Porem quando uso o where junto com a view a consulta retorna zerada, e o registro está na tabela.Pode haver restrição do limit neste caso? 2009/11/30 Leonardo Cezar lhce...@gmail.com 2009/11/30 Tiago Valério tiagosvale...@gmail.com: corte Porem não gostaria de dar o grant de select para o usuario em tabela, pois somente assim a function funcionaria. Neste caso teria como resolver esta questão sem o grant de select em tabela? CREATE FUNCTION seleciona_tabela(...) RETURNS tabela LANGUAGE PLPGSQL AS $selection_tabela$ [] END; $selecion_tabela$ EXTERNAL SECURITY DEFINER; ^^^ Utilize a opção SECURITY na definição da procedure. Por outro lado, uma visão resolveria seu problema de forma mais simples. -Leo -- Leonardo Cezar http://www.aslid.org.br http://postgreslogia.wordpress.com http://www.dextra.com.br/postgres ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] SELEÇÃO DE UM REGISTRO
Opa, 2009/11/30 Tiago Valério tiagosvale...@gmail.com Leo Obrigado pela ajuda e aproveitando, para colocar em pratica os conhecimentos adquiridos. Tentei com a criação da view e definindo limit 1.Porem quando uso o where junto com a view a consulta retorna zerada, e o registro está na tabela.Pode haver restrição do limit neste caso? Você pode mandar a definição da view e um exemplo dos dados, podem ser ficticios. 2009/11/30 Leonardo Cezar lhce...@gmail.com 2009/11/30 Tiago Valério tiagosvale...@gmail.com: corte Porem não gostaria de dar o grant de select para o usuario em tabela, pois somente assim a function funcionaria. Neste caso teria como resolver esta questão sem o grant de select em tabela? CREATE FUNCTION seleciona_tabela(...) RETURNS tabela LANGUAGE PLPGSQL AS $selection_tabela$ [] END; $selecion_tabela$ EXTERNAL SECURITY DEFINER; ^^^ Utilize a opção SECURITY na definição da procedure. Por outro lado, uma visão resolveria seu problema de forma mais simples. -Leo -- Leonardo Cezar http://www.aslid.org.br http://postgreslogia.wordpress.com http://www.dextra.com.br/postgres ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral []s -- JotaComm http://jotacomm.wordpress.com ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] SELEÇÃO DE UM REGISTRO
Fiz da seguinte forma CREATE OR REPLACE VIEW vw_tabela as select id,nmcliente,endereco,tel from esquema.tabela order by id limit 1; Então fiz o seguinte consulta na view select * from vw_tabela where id=1234; Na situacao acima o resultado gerado é zero. Porem se faço a consulta direto na tabela conforme abaixo, o registro é retornado. select * from esquema.tabela where id=1234; Será alguma restrição do limit isto? Desde obrigado pela força. 2009/11/30 JotaComm jota.c...@gmail.com Opa, 2009/11/30 Tiago Valério tiagosvale...@gmail.com Leo Obrigado pela ajuda e aproveitando, para colocar em pratica os conhecimentos adquiridos. Tentei com a criação da view e definindo limit 1.Porem quando uso o where junto com a view a consulta retorna zerada, e o registro está na tabela.Pode haver restrição do limit neste caso? Você pode mandar a definição da view e um exemplo dos dados, podem ser ficticios. 2009/11/30 Leonardo Cezar lhce...@gmail.com 2009/11/30 Tiago Valério tiagosvale...@gmail.com: corte Porem não gostaria de dar o grant de select para o usuario em tabela, pois somente assim a function funcionaria. Neste caso teria como resolver esta questão sem o grant de select em tabela? CREATE FUNCTION seleciona_tabela(...) RETURNS tabela LANGUAGE PLPGSQL AS $selection_tabela$ [] END; $selecion_tabela$ EXTERNAL SECURITY DEFINER; ^^^ Utilize a opção SECURITY na definição da procedure. Por outro lado, uma visão resolveria seu problema de forma mais simples. -Leo -- Leonardo Cezar http://www.aslid.org.br http://postgreslogia.wordpress.com http://www.dextra.com.br/postgres ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral []s -- JotaComm http://jotacomm.wordpress.com ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] SELEÇÃO DE UM REGISTRO
Olá, 2009/11/30 Tiago Valério tiagosvale...@gmail.com Fiz da seguinte forma CREATE OR REPLACE VIEW vw_tabela as select id,nmcliente,endereco,tel from esquema.tabela order by id limit 1; Então fiz o seguinte consulta na view select * from vw_tabela where id=1234; Na situacao acima o resultado gerado é zero. Você não pode fazer o limit 1 na chamada da view? Ao fazer dentro da view quando você faz limit 1 você vai trazer apenas o primeiro registro, se você fizer teste com o primeiro registro da tabela você verá que vai funcionar, se fizer com qualquer outro não. Recomendaria você usar o limit na chamada da view. PS: Não sei se minha explicação ficou clara. Porem se faço a consulta direto na tabela conforme abaixo, o registro é retornado. select * from esquema.tabela where id=1234; Será alguma restrição do limit isto? Desde obrigado pela força. 2009/11/30 JotaComm jota.c...@gmail.com Opa, 2009/11/30 Tiago Valério tiagosvale...@gmail.com Leo Obrigado pela ajuda e aproveitando, para colocar em pratica os conhecimentos adquiridos. Tentei com a criação da view e definindo limit 1.Porem quando uso o where junto com a view a consulta retorna zerada, e o registro está na tabela.Pode haver restrição do limit neste caso? Você pode mandar a definição da view e um exemplo dos dados, podem ser ficticios. 2009/11/30 Leonardo Cezar lhce...@gmail.com 2009/11/30 Tiago Valério tiagosvale...@gmail.com: corte Porem não gostaria de dar o grant de select para o usuario em tabela, pois somente assim a function funcionaria. Neste caso teria como resolver esta questão sem o grant de select em tabela? CREATE FUNCTION seleciona_tabela(...) RETURNS tabela LANGUAGE PLPGSQL AS $selection_tabela$ [] END; $selecion_tabela$ EXTERNAL SECURITY DEFINER; ^^^ Utilize a opção SECURITY na definição da procedure. Por outro lado, uma visão resolveria seu problema de forma mais simples. -Leo -- Leonardo Cezar http://www.aslid.org.br http://postgreslogia.wordpress.com http://www.dextra.com.br/postgres ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral []s -- JotaComm http://jotacomm.wordpress.com ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral []s -- JotaComm http://jotacomm.wordpress.com ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral