[firebase-br] duvida

Eduardo Pelizzari de Andrade eduardoandrade em persoft.com.br
Seg Mar 3 15:17:53 -03 2008


Oi Pedro,

Estes problemas que você está apresentando são problemas de
concorrência. Você precisa prever isto na programação, por exemplo, a
seguinte tabela:

create tabe agenda(
id integer not null,
nome varchar(50),
telefone varchar(10),
primary key (id))

Ai você tem os seguintes dados:

id nome telefone
1 "Zé" 1111-1111
2 "Mané" 2222-2222
3 "José" 3333-3333
4 "Josué" 4444-4444

Se você quiser trocar o telefone do registro "2" para 6666-6666, você
teria três maneiras de alterar ou excluir os dados:

1º Verificando somente a chave primária:

update agenda set telefone = '6666-6666'
where id = 2

Neste caso a atualização só falha se o registro for excluído;

2º Verificando somente a chave primária e o campo que está sendo alterado:

update agenda set telefone = '6666-6666'
where id = 2
and telefone = '2222-2222'

Neste caso a atualização falha se o registro for excluído ou o telefone
for alterado. Se no momento da alteração na estação, uma outra estação
alterou o telefone e ele não for mais '222-2222', seu update falha.

3º Verficando todo o registro:

update agenda set telefone = '6666-6666'
where id = 2
and telefone = '2222-2222'
and nome= 'Mané'

Neste caso no momento que alteração for ser executada, se o registro
possuir qualquer diferença ele irá falhar na atualização;.

Pela sua dúvida, acho que você deve usar um componente de acesso via
dataset, como os dos Delphi, do php, java, asp etc.

Estes componentes resolvem o update para você, ou seja, você dá um
comando para buscar o registro, e na hora de salvar ele gera os updates
da maneira que coloquei para você. Geralmente nestes componentes existem
parâmetros para definir quais dos três updates será aplicado, no Delphi
por exemplo, vários componentes possuem a propriedade UpdateMode, onde
você define isso. No ODBC, quando abrimos a query definimos como será
feito o update.

É legal você fazer uma pesquisa mais profunda, este assunto é importante
e estes problemas que você tem no mysql você terá em qualquer banco de
dados, se não dominar isso.

Pedro henrique escreveu:
> as atualizaçoes que falei
> é que no mysql, sempre tive problema, com algumas mensagem que dava
>  
> tipo a linha nao pode ser encontrada para atualização ou os dados nela 
> foram alterados recentemente, nao é possivel efetuar alteração
>  
> estas coisas
>  
>  
> da isto direto, por isto que to migrando pro firebird
>  
>  
> ------------------------------------------------------------------------
>
> No virus found in this incoming message.
> Checked by AVG Free Edition. 
> Version: 7.5.516 / Virus Database: 269.21.3/1307 - Release Date: 02/03/2008 15:59
>   

-- 
Eduardo Pelizzari de Andrade
Persoft Softwares Aplicativos
Fone: 55 11 62218061





Mais detalhes sobre a lista de discussão lista