Pular para o conteúdo

Fóruns SQL e PL/SQL [RESOLVIDO] Duvida tratamento de concorrência [RESOLVIDO] Duvida tratamento de concorrência

#96133
fsitja
Participante

    Você está modelando as tabelas ainda? Qual seu modelo atual?

    Imagine a seguinte situação:

    João e Maria estão tentando agendar um horário cada um.

    João seleciona o horário que ele deseja, preenche algum formulário adicional com mais informações mas desiste de agendar antes de confirmar o agendamento.

    Enquanto isso, Maria seleciona seu horário enquanto João preenche o formulário adicional.
    Pergunto: em que momento é feito o “lock” na agenda?
    – Maria deveria enxergar que não há horários disponíveis?
    – Maria deveria poder prosseguir com o preenchimento do seu formulário, em caso de João (e quaisquer outros usuários) desistir do agendamento? Como efeito colateral, se os dois decidirem confirmar, um verá uma mensagem de erro na confirmação dizendo que o horário foi “tomado” por alguém que preencheu mais rápido…

    Tudo vai depender da sua implementação e do seu modelo de dados. Penso que é sim necessário abordar o problema de concorrência. O Oracle não resolve os problemas que apontei acima sozinho, e muitos outros.

    O select for update (com ou sem nowait) vai servir para controlar o comportamento da procedure que faz o agendamento e da consulta que exibe os horários disponíveis.