INNODB (Controle de Transação)

MySQL

21/07/2005

Estou com seguinte problema.
Tenho as seguintes tabelas:
Tabela PAI
[CodPai, NomePai]
Tabela FILHO
[CodFilho AUTOINCREMENT, CodPai, NomeFilho]

Vamos dizer que na Tabela PAI eu tenha 2 registros:
CodPai NomePai
-----------------------------
1 João
2 Paulo

Agora eu vou abrir duas transações:

TRANSAÇÃO I TRANSAÇÃO II
-------------------------------------------------------------------------------------
BEGIN TRANSACTION
BEGIN TRANSACTION
SELECT * FROM PAI
WHERE CodPai = 1 FOR UPDATE
SELECT * FROM PAI
WHERE CodPai = 2 FOR UPDATE
INSERT INTO FILHO
(CodPai, NomeFilho)
VALUES (1,´Leo´)
INSERT INTO FILHO
(CodPai, NomeFilho)
VALUES (2,´João´)
. .
. .
. .
O erro ocorre quando eu executo este segundo INSERT, não sei porque depois que qualquer uma das transações executam o INSERT, então a tabela FILHO fica travada para a transação que fez o INSERT primeiro até que seja feito um commit ou roolback.

Alguém sabe alguma solução para que não aconteça o travamento da tabela FILHO.

Desde já grato[],
Leonardo Barrozo dos Santos


Lbbsantos

Lbbsantos

Curtidas 0
POSTAR