Pergunta

Tenho o texto SQL "SELECT * FROM TABLE1 WITH (NOLOCK)".

Duas questões:

  1. Como faço para que meu TADOQuery use a dica NOLOCK sem precisar incluí-la no texto SQL?Tenho literalmente milhares de TADOQuery com SQL construído dinamicamente e seria difícil adicionar WITH (NOLOCK) a todos eles, sem mencionar que uso with com plataformas de banco de dados diferentes de MSSQL.Existe uma propriedade TADOQuery?

  2. Como faço para conseguir a mesma coisa com um TADOTable?TADOTable não tem SQL, então como posso dizer para usar a dica NOLOCK?

Obrigado

Foi útil?

Solução

Se você usar o MS SQL, execute abaixo a instrução uma vez na conexão

Definir nível de isolamento de transação lido não comprometido

Cheer ap

Outras dicas

As dicas são específicas do banco de dados, portanto você deve emitir a adequada para cada banco de dados suportado.Em alguns bancos de dados também não há nada equivalente, por exemplo, o Oracle não permite nada parecido (os leitores nunca bloqueiam os escritores e os escritores nunca bloqueiam os leitores, portanto, não há necessidade).

IMHO, você não deve usar componentes TADOTable - de qualquer forma, AFAIK, você não tem como especificar uma dica para a consulta gerada - o que é muito genérico de qualquer maneira.

Você também deveria estar MUITO cuidado ao usar NOLOCK.Significa LEIA NÃO COMPROMETIDA, também conhecido como leituras sujas.Você está ignorando a proteção de transação e, a menos que tenha um bom motivo para ignorá-la, não deveria - o ganho no desempenho pode não valer a pena a perda na integridade e consistência dos dados.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top