Al�m
da dica do Leandro, sugiro criar uma tabela para armazentar o �ltimo sequencial
dispon�vel pois dependendo do tamanho de sua tabela, a busca com select max
(dentro de uma transa��o) pode tornar o processo lento. Outra op��o seria
utilizar o campo IDENTITY do SQLServer.
Sds,
Rodrigo - Target Sistemas.
-----Mensagem original-----Oi,
De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]Em nome de Leandro Neves
Enviada em: s�bado, 14 de maio de 2005 07:51
Para: [email protected]
Assunto: Re: [sqlwin] controle de concorr�ncia SQL SERVER
Primeiro qual o erro que esta dando !
Segundo econtrei uma coisa n�o recomenda no seu codigo.
Pelo que entendi vc esta pegando o valor maximo do registro na tabela e somando + 1.. so que vc esta fazendo isso na aplica��o... tornando possivel que duas pessoas efetuem o selecet max ao mesmo tempo e venha o mesmo valor.
Assim dois clientes tentaram enviar o mesmo valor para o banco podendo da erro de primary key.
Espero ter ajudado.
Leandro Neves
On 5/13/05, [EMAIL PROTECTED] < [EMAIL PROTECTED]> wrote:Amigos,
estou com um problema no sistema, quando dois usu�rios baixam um cheque ao mesmo
tempo. Estou utilizando o banco SQL SERVER.
Se algu�m tiver um exemplo, eu ficaria grato.
Vou colocar o c�digo q estou utilizando, pois algu�m pode descobrir o q estou
fazendo de errado ou se est� faltando alguma coisa.
O c�digo � o seguinte:
######################################################################
Set sSql = '
DECLARE C_MAXIMO CURSOR FOR
SELECT maximo
FROM ' || sTabela || ' FOR UPDATE
OPEN C_MAXIMO
FETCH NEXT FROM C_MAXIMO '
Call SqlPrepareAndExecute( hSqlGeral, sSql )
Set sSql = 'Select maximo from ' || sTabela || ' into :nMax'
Call SqlPrepareAndExecute( hSqlGeral, sSql )
Call SqlFetchNext( hSqlGeral, nErro )
Set sSql = '
BEGIN
UPDATE ' || sTabela || '
SET maximo = maximo + 1
END
CLOSE C_MAXIMO
DEALLOCATE C_MAXIMO '
Call SqlPrepareAndExecute( hSqlGeral, sSql )
################################################################
Grato.
==============================================
Lista de Centura SQLWindows
Administrador : [EMAIL PROTECTED]
[ http://www.centuraexplorer.com ]
Para sair desta lista mande mensagem para:
[EMAIL PROTECTED] sem nada no Subject e
com o comando a seguir no corpo da msg:
"unsubscribe sqlwin" (sem as aspas)
==============================================
