Por defecto, MySQL se ejecuta con el modo autocommit activado. Esto significa que en cuanto ejecute un comando que actualice (modifique) una tabla, MySQL almacena la actualización en disco.
Esta modalidad de autocommit solo puede ser desactivada si se esta trabajando con tablas InnoDB (Que además son las únicas que soportan la integridad referencial en Mysql).
Para desactivar momentáneamente el autocomit ejecutamos el comando:
Esta modalidad de autocommit solo puede ser desactivada si se esta trabajando con tablas InnoDB (Que además son las únicas que soportan la integridad referencial en Mysql).
Para desactivar momentáneamente el autocomit ejecutamos el comando:
SET AUTOCOMMIT=0;
Luego de deshabilitar el autocommit (set autocommit = 0;) obligadamente tendremos que utilizar
obligadamente COMMIT para guardar o ROLLBACK para deshacer.
Si quiere deshabilitar el modo autocommit para una serie única de comandos, puede usar el comando
START TRANSACTIONEjemplo:
Creare una nueva tabla en la Base de datos Empresa:
CREATE TABLE `departamentos2` (
`CODIGODEP` INTEGER(11) NOT NULL DEFAULT '0',
`NOMBREDEP` VARCHAR(100),
`PRESUPUESTO` INTEGER(11) DEFAULT NULL,
PRIMARY KEY (`CODIGODEP`)
)ENGINE=InnoDB
y Ahora insertare registros de la tabla departamentos a departamentos2 mediante una transacción
START TRANSACTION;
SELECT @A := presupuesto
FROM departamentos
WHERE codigodep =11;
INSERT INTO departamentos2( codigodep, nombredep, presupuesto )
VALUES ( 11, 'prueba', @A );
COMMIT;
En el ejemplo anterior guarde el presupuesto del departamento 11 en la variable @A y luego asigne ese presupuesto en la tabla departamentos2
Ahora un ejemplo donde replicare todos los datos de un departamento en la tabla departamentos2
START TRANSACTION;
SELECT @A := presupuesto, @B := codigodep, @C := nombredep
FROM departamentos
WHERE codigodep =33;
INSERT INTO departamentos2( codigodep, nombredep, presupuesto )
VALUES (
@B , @C , @A
);
COMMIT ;
En el ejemplo anterior se copio todo un departamento al la tabla departamentos 2....
Se puede sumar los presupuestos y asignarlos así:
START TRANSACTION;
SELECT @A:=PRESUPUESTO FROM departamentos WHERE codigodep=11;
UPDATE departamentos2 SET PRESUPUESTO = PRESUPUESTO + @A WHERE codigodep=33;
COMMIT;
En este último ejemplo actualizo el presupuesto del departamento 33 de la tabla
departamentos2 sumandole todo el presupuesto de la departamento 11 de la tabla
departamentos
Al realizar una transacción SQL se debe tener en cuenta que la tabla se bloquea
quedando solo habilitada a lo que estamos realizando nosotros
departamentos2 sumandole todo el presupuesto de la departamento 11 de la tabla
departamentos
Al realizar una transacción SQL se debe tener en cuenta que la tabla se bloquea
quedando solo habilitada a lo que estamos realizando nosotros
No hay comentarios:
Publicar un comentario