Como você usa NOLOCK com TADOQuery e TADOTable?
Pergunta
Tenho o texto SQL "SELECT * FROM TABLE1 WITH (NOLOCK)".
Duas questões:
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?
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
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.