Deixar-nos dizê-lo têm a tabela t (i int nao nulo, um carvão animal (1))
introduzir em t selecionam 1, “a”
rosquear as edições A1 isto:
começar a transação
AJUSTAR REPETÍVEL DO NÍVEL DA ISOLAÇÃO DA TRANSAÇÃO LIDO
selecionar * de t onde i=2
e então apenas senta-se lá. Vêm longitudinalmente a linha B e as edições
selecionar * de t onde i=2
atualizar o a='c ajustado de t onde i=2
O ø destas indicações do b sucederá, mas �a esperará até a linha A emitiu comete. Há um problema entretanto: é fácil ver que B pode facilmente cancelar a mudança feita por A, se actua de estabelecimento de bases em o que vê quando recuperou a fileira. Para essa razão, é melhor emitir
a='c ajustado da atualização t onde i=2 e a='a
Isto verific eficazmente que B está atualizando o que pensa que está atualizando. E isto é exatamente como o cursor cliente-baseado está funcionando, que é o tipo o mais usual do cursor usado em ferramentas de desenvolvimento de hoje, especialmente com suporte na internet: nenhuma transação, nenhum fechamento, mas durante a verificação da atualização de todos os campos que foram lidos, e eventualmente mudaram, a seguir mensagem de erro de maneira que um outro usuário modificou o resultset.
Se você quer eliminar este, a seguir você tem que emitir o nível ainda mais restritivo SERIALIZABLE da isolação da transação na linha B, e assim que você ler as fileiras em A, atualiza-as lá usando alguma coluna dummy apenas com esta finalidade. Então B não poderá ver as fileiras que podem ser modificadas por A - que está correto, porque de outra maneira B não saberia que estas fileiras estão sendo trabalhadas agora sobre pelo A. Mas isto naturalmente traz na introdução de A que deixa de funcionar, saindo para o almoço, etc., etc.
Para essa razão, o cursor cliente-localizado é provavelmente a maneira a mais prática de fazer todo o isto, que é porque é o tipo o mais difundido de operações da base de dados hoje.