Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/10/2009, 20:23
DARIOPAVEL
 
Fecha de Ingreso: septiembre-2009
Mensajes: 8
Antigüedad: 14 años, 8 meses
Puntos: 0
Exclamación Deadlock traduccion a mysql

HOLA QUE TAL, NECESITO AYUDA, PS EN LA ESCUELA ME DEJARON ENCARGADO ENTREGAR UN EJEMPLO DE DEADLOCK EN MYSQL

YA ENCONTRE UN BUEN PROBLEMA..PERO EL PROBLEMA ES QUE ESTA EN CODIGO SQLSERVER Y NO HE PODIDO TRADUCIRLO...ALGUIEN ME LO PODRIA TRADUCIR A MYSQL? DE VERDAD ME URGE MUCHO...MUCHISIMAS GRACIAS DE ANTEMANO

Transaction A

BEGIN TRANSACTION

UPDATE Customer SET LastName = 'John' WHERE CustomerId=111
WAITFOR DELAY '00:00:05' -- Wait for 5 ms
UPDATE Orders SET CustomerId = 1 WHERE OrderId = 221

COMMIT TRANSACTION
.................................................. ..........................................
Transaction B


BEGIN TRANSACTION

UPDATE Orders SET ShippingId = 12 WHERE OrderId = 221
WAITFOR DELAY '00:00:05' -- Wait for 5 ms
UPDATE Customer SET FirstName = 'Mike' WHERE CustomerId=111

COMMIT TRANSACTION
.................................................. .................................................. ....

2DA PARTE
Transaction A
Collapse

RETRY: -- Label RETRY
BEGIN TRANSACTION
BEGIN TRY

UPDATE Customer SET LastName = 'John' WHERE CustomerId=111
WAITFOR DELAY '00:00:05' -- Wait for 5 ms
UPDATE Orders SET CustomerId = 1 WHERE OrderId = 221

COMMIT TRANSACTION
END TRY
BEGIN CATCH
PRINT 'Rollback Transaction'
ROLLBACK TRANSACTION
IF ERROR_NUMBER() = 1205 -- Deadlock Error Number
BEGIN
WAITFOR DELAY '00:00:00.05' -- Wait for 5 ms
GOTO RETRY -- Go to Label RETRY
END
END CATCH
.................................................. .................................................. ....................
Transaction B
Collapse

RETRY: -- Label RETRY
BEGIN TRANSACTION
BEGIN TRY
UPDATE Orders SET ShippingId = 12 Where OrderId = 221
WAITFOR DELAY '00:00:05' -- Wait for 5 ms
UPDATE Customer SET FirstName = 'Mike' WHERE CustomerId=111

COMMIT TRANSACTION
END TRY
BEGIN CATCH
PRINT 'Rollback Transaction'
ROLLBACK TRANSACTION
IF ERROR_NUMBER() = 1205 -- Deadlock Error Number
BEGIN
WAITFOR DELAY '00:00:00.05' -- Wait for 5 ms
GOTO RETRY -- Go to Label RETRY
END
END CATCH

DE VERDAD LO NECESITO MUCHO..AYUDA PORFAVOR..