Por qual motivo não podemos dar DELETE ou INSERT diretamente em uma tabela do Protheus

No artigo de hoje vou explicar o motivo de não usarmos INSERT, UPDATE e DELETE diretamente nas tabelas do Protheus.

Imagina o seguinte cenário, você tem um supermercado, que tem várias regras e vários departamentos. Ai você avisa o gerente do estabelecimento, que tem o Zézinho, e esse rapaz pode fazer o que quiser dentro do mercado sem supervisão.

Então o Zézinho entra no mercado, e se ele quiser tirar produtos das gôndolas (operação DELETE) ele faz. Se ele quiser alterar produtos de uma locação para outra (operação UPDATE) ele faz. Se ele quiser colocar mais produtos do que a prateleira suporta (operação INSERT) ele faz. E tudo isso sem supervisão nenhuma.

Vai ter um momento, em que o pessoal do estoque vai começar a falar que existem falhas no Kardex, assim como pessoal do faturamento, falando que consta produtos para vender, mas ninguém encontra, etc.

Para piorar a situação, o Zézinho vai e coloca por exemplo, cigarros e bebidas no corredor de brinquedos infantis (faz uma operação sem nenhuma integridade de dados). E começam a chegar reclamações de tudo que é lado dos seus clientes.

Pois bem jovens, para contextualizar todo o cenário acima, imagine que o mercado é o ERP e o Zézinho é para quem você deu permissão de executar comandos direto no SQL, seja um estagiário ou uma pessoa que não conheça muito de Banco de Dados.

Toda a estrutura do ERP é feita com validações internas, gatilhos, inicializações, etc… Por isso que, no caso do Protheus, a forma de manipular registros, o ideal é que seja via ExecAuto, e somente quando não é possível (ou quando é tabelas customizadas) que podemos realizar a manipulação com RecLock.

Se simplesmente fizermos tudo via SQL / APSDU, não iremos garantir a integridade dos dados, erros estranhos irão ocorrer na base (como mensagens de falha, queda de serviço, dbaccess podendo apresentar travamentos, etc).

Resumidamente, se você usa o Protheus, opte sempre por ExecAuto e em segundo caso RecLock.

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

Deixe uma resposta