Está en la página 1de 1

IES Suárez de Figueroa.

@Avanza
Módulo: Gestión de bases de datos Página: 1

Unidad didáctica 5. Edición de los datos.


Recurso 2. Ejemplos de transacciones.

Base de datos utilizada: Departamentos.

En estos ejemplos se utilizan variables de sesión de MariaDB/Mysql. Las variables de


sesión son creadas por el usuario, su nombre comienza por @, no requieren declaración, no
son visibles en otras sesiones y existen mientras dura la sesión (conexión del usuario).

Las variables se utilizan para guardar datos (un dato por variable) que pueden ser
usados/compartidos por varias sentencias SQL.

1. Crear un nuevo departamento e insertar a sus cuatro trabajadores. En este caso la


variable de sesión @numeroDept guarda el valor numeroDepartamento que se le
asigna a ‘Recursos humanos’, para poder usarlo más tarde en los INSERT de los
empleados que deberán tener en el campo departamento (FK) ese mismo valor.

start TRANSACTION;
insert into departamentos values (default, 'Recursos humanos', 2500);
select @numeroDept:=numeroDepartamento from departamentos where nombre='Recursos
humanos';
insert into empleados (numeroempleado, nombre, departamento) values
(default, 'Juan y Medio', @numeroDept),
(default, 'Antoni Daimiel', @numeroDept),
(default, 'Carlos Vives', @numeroDept),
(default, 'Emilio Aragón', @numeroDept);
Commit;

2. Cambiar el presupuesto del departamento de Personal igualándolo al máximo


presupuesto existente. Incrementar un 2% el salario de sus empleados (los de
Personal). Si tienen null en el salario asignar 1000 euros.
En la variable @maxPresupuesto guardamos el valor del presupuesto máximo de la
tabla departamentos para actualizar el presupuesto de Personal con ese valor.

start TRANSACTION;
select @maxPresupuesto:=max(presupuesto) from departamentos;
update departamentos set presupuesto=@maxPresupuesto where nombre='Personal';
update empleados set salario= salario*1.02
where departamento = (select numeroDepartamento from departamentos where
nombre='Personal') and salario is not null;
update empleados set salario= 1000
where departamento = (select numeroDepartamento from departamentos where
nombre='Personal') and salario is null;
Commit;

También podría gustarte