transaciones en MySQL
En la versi贸n que yo utilizo, que es la 3.23.52 no es posible hacer transacciones, y por tanto, en versiones anteriores tampoco. No s茅 si en versiones posteriores es posible.
El hecho de no poder hacer transacciones se soluciona haciendo bloqueos en las tablas.
Espero que esto te ayude.
Saludos.
El hecho de no poder hacer transacciones se soluciona haciendo bloqueos en las tablas.
Espero que esto te ayude.
Saludos.
si amigo, en otras versiones posteriores si aparece y he leido un poco sobre estas cosas y creo que pueden ser muy utiles
Desde la version 4 ya se puede.
Ahora esta la version 5 beta, pronto se realizara el release tiene nuevas caracteristicas muy interesantes como vistas y procedimientos almacenados, entre otras. En la pagina oficial http://www.mysql.com se detalla con mayor claridad esto.
Saludos,
Farid
http://farid-darkground.iespana.es
Ahora esta la version 5 beta, pronto se realizara el release tiene nuevas caracteristicas muy interesantes como vistas y procedimientos almacenados, entre otras. En la pagina oficial http://www.mysql.com se detalla con mayor claridad esto.
Saludos,
Farid
http://farid-darkground.iespana.es
yo utilizo la version 4.1, pero buscar茅 informaci贸n sobre los bloqueos de tablas.
Saludos
Saludos
'Este codgo lo use en una aplicacion en la que nos pedian el manejo de transacciones, actualmente le voy a agregar el manejo de concurrencias
Private Sub cmdSqlAdd_Click()
On Error GoTo TransErr
'Cuando se genera un error ira a la etiqueta llamada TransErr y ejecutara el codigo que ahi pongamos, lo ideal es manejar ahi el RollBack para deshacer los cambios
conn.BeginTrans 'iniciamos la Transaccion
MsgBox "Transaccion Iniciada", vbOKOnly, "Estado de la transacci贸n"
conn.Execute "INSERT INTO Cliente(IDCliente,Nombre,Direccion,Telefono,RFC) values('" & Text1 & "','" & Text2 & "','" & Text3 & "','" & Text5 & "','" & Text6 & "')", , adExecuteNoRecords
'Ejecutamos las instrucciones que necesitamos, si en esta parte se genera un error cualquiera que sea entonces se ira a la parte de TransErr, si no se hara un commit y los cambios seran aceptados
conn.CommitTrans
MsgBox "Transaccion Cometida", vbOKOnly, "Estado de la transacci贸n"
End If
Exit Sub 'Este es importante porque si no estuviera entonces se seguirian ejecutando las lineas de abajo
TransErr:
conn.RollbackTrans
MsgBox "Transaccion Fallada", vbOKOnly, "Estado de la transacci贸n"
End Sub
Private Sub cmdSqlAdd_Click()
On Error GoTo TransErr
'Cuando se genera un error ira a la etiqueta llamada TransErr y ejecutara el codigo que ahi pongamos, lo ideal es manejar ahi el RollBack para deshacer los cambios
conn.BeginTrans 'iniciamos la Transaccion
MsgBox "Transaccion Iniciada", vbOKOnly, "Estado de la transacci贸n"
conn.Execute "INSERT INTO Cliente(IDCliente,Nombre,Direccion,Telefono,RFC) values('" & Text1 & "','" & Text2 & "','" & Text3 & "','" & Text5 & "','" & Text6 & "')", , adExecuteNoRecords
'Ejecutamos las instrucciones que necesitamos, si en esta parte se genera un error cualquiera que sea entonces se ira a la parte de TransErr, si no se hara un commit y los cambios seran aceptados
conn.CommitTrans
MsgBox "Transaccion Cometida", vbOKOnly, "Estado de la transacci贸n"
End If
Exit Sub 'Este es importante porque si no estuviera entonces se seguirian ejecutando las lineas de abajo
TransErr:
conn.RollbackTrans
MsgBox "Transaccion Fallada", vbOKOnly, "Estado de la transacci贸n"
End Sub
El servidor de bases de datos MySQL soporta distintos tipos de tablas, tales como ISAM, MyISAM, InnoDB, y DBD (Berkeley Database). De 茅stos, InnoDB es el tipo de tabla m谩s importante (despu茅s del tipo predeterminado, MyISAM), y merece una atenci贸n especial.
Las tablas del tipo InnoDB est谩n estructuradas de forma distinta que MyISAM, ya que se almacenan en un s贸lo archivo en lugar de tres, y sus principales caracter铆sticas son que permite trabajar con transacciones, y definir reglas de integridad referencial.
Para crear una tabla InnoDB, procedemos con el c贸digo SQL est谩ndar CREATE TABLE, pero debemos especificar que se trata de una tabla del tipo InnoDB (TYPE= InnoDB). Esto es aplicable a cualquier tipo de tabla, pero cuando no se especifica nada, MySQL supone que se trata de una tabla MyISAM.
CREATE TABLE innotest (campo INT NOT NULL PRIMARY KEY) TYPE = InnoDB;
mysql> INSERT INTO innotest VALUES(1);
Query OK, 1 row affected (0.08 sec)
mysql> INSERT INTO innotest VALUES(2);
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO innotest VALUES(3);
Query OK, 1 row affected (0.04 sec)
mysql> SELECT * FROM innotest;
+-------+
| campo |
+-------+
| 1 |
| 2 |
| 3 |
+-------+
3 rows in set (0.00 sec)
Ahora veamos como usar transacciones.
mysql> BEGIN;
Query OK, 0 rows affected (0.01 sec)
mysql> INSERT INTO innotest VALUES(4);
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM innotest;
+-------+
| campo |
+-------+
| 1 |
| 2 |
| 3 |
| 4 |
+-------+
4 rows in set (0.00 sec)
Si en este momento ejecutamos un ROLLBACK, la transacci贸n no ser谩 completada, y los cambios realizados sobre la tabla no tendr谩n efecto.
mysql> ROLLBACK;
Query OK, 0 rows affected (0.06 sec)
mysql> SELECT * FROM innotest;
+-------+
| campo |
+-------+
| 1 |
| 2 |
| 3 |
+-------+
3 rows in set (0.00 sec)
Las tablas del tipo InnoDB est谩n estructuradas de forma distinta que MyISAM, ya que se almacenan en un s贸lo archivo en lugar de tres, y sus principales caracter铆sticas son que permite trabajar con transacciones, y definir reglas de integridad referencial.
Para crear una tabla InnoDB, procedemos con el c贸digo SQL est谩ndar CREATE TABLE, pero debemos especificar que se trata de una tabla del tipo InnoDB (TYPE= InnoDB). Esto es aplicable a cualquier tipo de tabla, pero cuando no se especifica nada, MySQL supone que se trata de una tabla MyISAM.
CREATE TABLE innotest (campo INT NOT NULL PRIMARY KEY) TYPE = InnoDB;
mysql> INSERT INTO innotest VALUES(1);
Query OK, 1 row affected (0.08 sec)
mysql> INSERT INTO innotest VALUES(2);
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO innotest VALUES(3);
Query OK, 1 row affected (0.04 sec)
mysql> SELECT * FROM innotest;
+-------+
| campo |
+-------+
| 1 |
| 2 |
| 3 |
+-------+
3 rows in set (0.00 sec)
Ahora veamos como usar transacciones.
mysql> BEGIN;
Query OK, 0 rows affected (0.01 sec)
mysql> INSERT INTO innotest VALUES(4);
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM innotest;
+-------+
| campo |
+-------+
| 1 |
| 2 |
| 3 |
| 4 |
+-------+
4 rows in set (0.00 sec)
Si en este momento ejecutamos un ROLLBACK, la transacci贸n no ser谩 completada, y los cambios realizados sobre la tabla no tendr谩n efecto.
mysql> ROLLBACK;
Query OK, 0 rows affected (0.06 sec)
mysql> SELECT * FROM innotest;
+-------+
| campo |
+-------+
| 1 |
| 2 |
| 3 |
+-------+
3 rows in set (0.00 sec)
