Pular para o conteúdo

Fóruns Banco de dados Oracle Lockar Linha, tem como?? Lockar Linha, tem como??

#94825
Maths
Participante

    [quote=”fsitja”:2wm0gqgb]Tudo bem, mas eu continuo sem entender: Qual a restrição que impede de criar uma view?

    Na view teria “WHERE ID NOT IN (3, 7, 23, 78 ) with check option”, como o Burga sugeriu. Deixa eu te dar um exemplo em código, pra você ver se atende.



    SQL> create table tab_original (id number(10), descricao varchar2(100));

    Table created
    SQL> insert into tab_original values (1, 'A');

    1 row inserted
    SQL> insert into tab_original values (2, 'A');

    1 row inserted
    SQL> insert into tab_original values (3, 'A');

    1 row inserted
    SQL> insert into tab_original values (4, 'A');

    1 row inserted
    SQL> insert into tab_original values (7, 'A');

    1 row inserted
    SQL> insert into tab_original values (23, 'A');

    1 row inserted
    SQL> insert into tab_original values (78, 'A');

    1 row inserted
    SQL> insert into tab_original values (100, 'A');

    1 row inserted
    SQL> select * from tab_original;

         ID DESCRICAO
    

          1 A
          2 A
          3 A
          4 A
          7 A
         23 A
         78 A
        100 A
    

    8 rows selected
    SQL> create or replace view vw_tab_original as
    2 select t.id, t.descricao
    3 from tab_original t
    4 where t.id not in (3, 7, 23, 78) with check option;

    View created
    SQL> select * from vw_tab_original;

         ID DESCRICAO
    

          1 A
          2 A
          4 A
        100 A
    

    Aí você tem duas opções

    • ou renomeia a tabela para algum outro nome e cria a view com o nome “tab_original”, no exemplo;
    • ou, se for outro usuário quem usa a tabela, remova o grant dela (revoke select, insert, update, delete on tab_original from outro_user) e dê os grants na view, criando um sinônimo privado nesse outro owner com o nome “tab_original”.

    De qualquer uma das duas formas acima, o usuário não vai nem perceber que a tabela que ele usava agora foi substituída por uma view. Quando quiser “destravar” elas, é só executar novamente o create or replace view, só removendo o where. O usuário utilizando a view vai apenas perceber que as novas linhas apareceram.[/quote]

    Entendi perfeitamente seu exemplo, otimo tambem, porem galera voceis ainda nao captaram ou eu nao to conseguindo explicar aehaEUHEOU.. Meu chefe deu uma lida aqui no topico novamente e disse matheus, explica desse jeito, assim.. fala para ele, imaginem duas aplicaçoes correntes manipulando um banco, mas essa aplicação quando vai mexer nos dados de uma tabela no banco algumas linhas estao vindo bloqueadas, ele nao me traz algumas linhas pois estao bloqueadas, entao eu preciso SIMULAR o que esta acontecendo para poder entender o motivo que ele esta lockando as linhas, ou seja, precisamos TRAVAR NÓS MESMOS algumas linhas dessa tabela para PODER SIMULAR se ele pega os dados ou nao, POREM a aplicação que vai buscar os dados nao me dá opcao nenhuma de fazer essas manipulaçoes no banco como voceis me dizem, eu tenho q travar algumas linhas e ir na minha aplicação (que se chama Service Flow) ai por ela eu vou e puxo a tabela, ai eu estarei simulando, pois vou puxar uma tabela que eu travei registros para ver se ele me traz os dados bloqueados OU NAO, para poder entender o problema que esta acontecendo nessa empresa que estamos implementando o sistema, entenderam? XD