› Fóruns › Banco de dados Oracle › Lockar Linha, tem como?? › Lockar Linha, tem como??
Se eu entendi bem, daria para implementar isso através de VPD ou Fine-Grained Acess, por política de segurança ocultando as linhas que você quer filtrar.
Só que para criar a policy e registrá-la você vai ter que ler bastante documentação para entender como funciona e como implementar, fica mais complicado a gente tentar explicar no fórum o conceito.
A ideia básica é o seguinte: a policy é uma function que gera dinamicamente uma cláusula where que é embutida em todas SQLs que rodam na máquina envolvendo determinada tabela. Você poderia criar uma trigger de logon que registra no context do user que conecta no banco (tipo uma “variável global” dizendo: “eu sou user_x”).
Sua function policy vai verificar qual user conectou no banco, tipo IF sys_context(‘meucontext’, ‘usuario’) = ‘USER_X’ THEN return ‘coluna_bloqueio = ”F”’.
Isso é feito dinamicamente pelo banco cada vez que alguém rodar um SQL na sua tabela com dados sensíveis a essa política de segurança.
Dá uma boa lida na documentação sobre VPD, Fine-Grained Access e Policy Functions e especificamente sobre a package DBMS_RLS da sua versão do Oracle.
Nos links abaixo seguem as explicações para a versão 11gR2:
http://download.oracle.com/docs/cd/E118 … 74/vpd.htm
http://download.oracle.com/docs/cd/E118 … g_data.htm
http://download.oracle.com/docs/cd/E118 … /d_rls.htm
Se você postar algo específico, tipo estruturas de exemplo de tabelas, dados de exemplo e consultas que você quer executar nelas, daria para bolar alguma coisa mais específica, mas não deixe de ler a documentação para entender sobre o assunto e ver se atende à sua necessidade.