Foros del Web » Programando para Internet » ASP Clásico »

alguien me explique sobre transacciones...

Estas en el tema de alguien me explique sobre transacciones... en el foro de ASP Clásico en Foros del Web. A ver, les pongo la idea y mi problema: 1-En una tabla inserto un nuevo registro. 2-Esa tabla tiene un campo llamado id que es ...
  #1 (permalink)  
Antiguo 28/08/2002, 09:10
 
Fecha de Ingreso: marzo-2001
Ubicación: Gran Canaria
Mensajes: 381
Antigüedad: 24 años, 2 meses
Puntos: 2
alguien me explique sobre transacciones...

A ver, les pongo la idea y mi problema:

1-En una tabla inserto un nuevo registro.
2-Esa tabla tiene un campo llamado id que es autonumerico.
3-Tras insertar ese registro hago un select para sacar el id mayor (en teoria es el del ultimo registro que inserte).
4-Luego uso ese id para meterlo como valor en otra tabla (esto me sirve pa interrelacionar las tablas).


Claro, el problema que se me plantea es que pasaria si justo entre mi sentencia de insert del nuevo registros y el select para sacar su id, otro usuario llegara e hiciera un insert. Claro, el id que yo tomo ya no seria el correcto (seria mi id+1).


Puedeo evitar esto con transacciones???, se puede controlar que esto no pase de alguna forma?, es que sino no hay manera de hacer tablas relacionales de manera segura, por que siempre se arriesga uno a tomar un id equivocado....


help!


Gracias!



ToKaTa.
  #2 (permalink)  
Antiguo 28/08/2002, 09:39
Avatar de bakanzipp  
Fecha de Ingreso: noviembre-2001
Ubicación: santiago de shilli
Mensajes: 2.554
Antigüedad: 23 años, 5 meses
Puntos: 0
Re: alguien me explique sobre transacciones...

haz el select inmediatamente despues de realizar el insert.



<center><font face=verdana size=1 color=blue>¸„.-·~¹°”ˆ˜¨Bakanzipp¨˜ˆ”°¹~·-.„¸[/CODE]</center>
  #3 (permalink)  
Antiguo 28/08/2002, 09:59
 
Fecha de Ingreso: marzo-2001
Ubicación: Gran Canaria
Mensajes: 381
Antigüedad: 24 años, 2 meses
Puntos: 2
Re: alguien me explique sobre transacciones...

si, pero digo yo que en ese milisengundo existe (aunque sea minima la posibilidad mejor no arriesgar)la posibilidad de que antes de mi sentencia de select llegue al servidor de mysql otra peticion de insert de otro usuario.....y claro..ya se armo...



ToKaTa.


Por cierto, gracias! :)
  #4 (permalink)  
Antiguo 28/08/2002, 11:23
pny
 
Fecha de Ingreso: marzo-2002
Ubicación: Barcelona
Mensajes: 33
Antigüedad: 23 años, 1 mes
Puntos: 0
Re: alguien me explique sobre transacciones...

yo diría que usando las transacciones y cambiando el modo de aislamiento (propiedad IsolationLevel) se podría conseguir que dos o mas transacciones no se molesten y se ejecuten de manera secuencial.

espero te sirva!

saludos :)
  #5 (permalink)  
Antiguo 28/08/2002, 11:42
 
Fecha de Ingreso: marzo-2001
Ubicación: Gran Canaria
Mensajes: 381
Antigüedad: 24 años, 2 meses
Puntos: 2
Re: alguien me explique sobre transacciones...

ok..tirare por ese camino a ver si saco algo...

Gracias!


ToKaTa.
  #6 (permalink)  
Antiguo 29/08/2002, 06:00
 
Fecha de Ingreso: marzo-2001
Ubicación: Gran Canaria
Mensajes: 381
Antigüedad: 24 años, 2 meses
Puntos: 2
Re: alguien me explique sobre transacciones...

en teoria debera ser algo como :

Código:
 
&lt;%
	Set conexion = CreateObject(&quot;ADODB.Connection&quot;)
	conexion.ConnectionString=&quot;DSN=miDSN&quot;	
	
	'Esto aisla totalmente la transaccion del resto de transacciones
	conexion.IsolationLevel = 1048576	
	conexion.open

	'Activamos la transaccion
	conexion.beginTrans
	
	Set rs = CreateObject(&quot;ADODB.Recordset&quot;)

	sql = &quot;insert into T_Tabla1&quot;	
	rs.open sql,conexion
	
	
	sql = &quot;insert into T_Tabla2&quot;	
	rs.open sql,conexion
		

	sql = &quot;insert into T_Tabla3&quot;	
	rs.open sql,conexion

	'Si no hubieron problemas realizamos los cambios
	' y si hubieron problemas deshacemos lo hecho
	if (conexion.Errors.Count &gt; 0) then
		conexion.RollBackTrans
	else	
		conexion.CommitTrans
	end if

%&gt;

Se supone que si todo es correcto se ejecuta el CommitTrans y se producen todos los cambios, y digo yo, ¿la transaccion bloquea la base de datos mientras ella esta dale que te pego?, por que esa seria a unica forma de que esto funcione bien...




ToKaTa.
  #7 (permalink)  
Antiguo 31/08/2002, 09:30
pny
 
Fecha de Ingreso: marzo-2002
Ubicación: Barcelona
Mensajes: 33
Antigüedad: 23 años, 1 mes
Puntos: 0
Re: alguien me explique sobre transacciones...

si está bien programado y el tipo de aislamiento es el adecuado lo que conseguiras es que las transacciones no se interfieran entre ellas consiguiendo así lo que tú querias.

un saludo!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:44.