Transações concorrentes
Bom dia a todos.
Vejam o seguinte exemplo:
* inicio a Transação A.
* SELECT maior codigo de chave primaria into codigo;
* codigo:=codigo+1;
* INSERT novo registro com a chave primária ´codigo´;
* COMITT a Transação A;
Se acontecer o seguinte:
* inicio a Transação A.
* SELECT maior codigo de chave primaria into codigo;
// a Transação B faz o mesmo ´SELECT maior codigo de chave primaria into codigo´ já que a Transação A não travou o registro para leitura//
* codigo:=codigo+1;
* INSERT novo registro com a chave primária ´codigo´;
* COMITT a Transação A;
Não iria gerar uma violação de chave primária ou a Transação B não teria acesso aos registros até que a Transação A fosse comitada?
Vejam o seguinte exemplo:
* inicio a Transação A.
* SELECT maior codigo de chave primaria into codigo;
* codigo:=codigo+1;
* INSERT novo registro com a chave primária ´codigo´;
* COMITT a Transação A;
Se acontecer o seguinte:
* inicio a Transação A.
* SELECT maior codigo de chave primaria into codigo;
// a Transação B faz o mesmo ´SELECT maior codigo de chave primaria into codigo´ já que a Transação A não travou o registro para leitura//
* codigo:=codigo+1;
* INSERT novo registro com a chave primária ´codigo´;
* COMITT a Transação A;
Não iria gerar uma violação de chave primária ou a Transação B não teria acesso aos registros até que a Transação A fosse comitada?
Matche
Curtidas 0
Respostas
Afarias
29/08/2003
|Não iria gerar uma violação de chave primária ou a Transação B não
|teria acesso aos registros até que a Transação A fosse comitada?
Por isso q o código q vc descreveu é completamente inaceitável em sistemas multi-usuário. Cada SGBD possui uma solução para códigos sequenciais q deve ser utilizada! No caso do Interbase/Firebird, SEMPRE use GENERATORS.
T+
|teria acesso aos registros até que a Transação A fosse comitada?
Por isso q o código q vc descreveu é completamente inaceitável em sistemas multi-usuário. Cada SGBD possui uma solução para códigos sequenciais q deve ser utilizada! No caso do Interbase/Firebird, SEMPRE use GENERATORS.
T+
GOSTEI 0