Logo Studenta

Triggers tp

¡Estudia con miles de materiales!

Vista previa del material en texto

1) DER
2)
4) TRIGGER
Un trigger o un disparador en una Base de datos es un evento que se ejecuta
automáticamente cuando se cumple una condición establecida al realizar una operación de
inserción (INSERT), actualización (UPDATE) o borrado (DELETE). Este no puede ser
ejecutado por el usuario sino que se almacena en una vista o en un evento en particular
definido, se asocian a una tabla.
La principal función de los trigger es contribuir a mejorar la gestión de la base de datos.
Gracias a ellos muchas operaciones se pueden realizar de forma automática, sin necesidad
de intervención humana, lo que permite ahorrar mucho tiempo.
Existen diferentes tipos de disparadores, en función de las ejecuciones que realizan.
● Disparadores de fila: también llamados row triggers, son aquellos cuya ejecución se
realiza a través de llamadas desde una tabla asociada al trigger.
● Disparadores de secuencia. También llamados statement triggers, son aquellos que
se ejecutan sólo una vez, independientemente de la cantidad de veces que se
cumplan las condiciones para su ejecución.
Ejemplo de Trigger:
Supongamos que tenemos una tabla donde se almacena el valor total de una venta, en
caso de que un Producto reciba un update de precio, este “procedimiento almacenado” se
ejecutará y calculará nuevamente el valor de venta.
5- ÍNDICES
Los índices son usados para acelerar el proceso de consultas en SQL. Sin índices, un Sistema
de Gestión de Bases de Datos, tiene que recorrer todos los registros en la tabla para recuperar
los resultados deseados. Si queremos crear índices, la base de datos va a ese índice primero y
luego recupera los correspondientes registros de tabla directamente.
Hay dos tipos de Índices en SQL Server:
● Índices Agrupados: define el orden en el cual los datos son físicamente almacenados en
una tabla. Los datos de las tablas pueden ser ordenados sólo en una forma, es decir,
sólo puede haber un índice agrupado por tabla. En SQL, la restricción de llave primaria
crea automáticamente un índice agrupado en esa columna en particular.
La manera de ver los índices de tablas es yendo a “Object
Explorer->Databases->Database_Name->Tables->Table_Name -> Indexes”.
● Índices no Agrupados: no ordena los datos físicos dentro de la tabla. Un índice no
agrupado es agrupado en un solo lugar y los datos de la tabla son almacenados en otro
lugar. Esto permite tener más de un índice no agrupado por tabla. Dentro de la tabla los
datos serán ordenados por un índice agrupado, por dentro los datos del índice no
agrupado son almacenados en un orden específico. El índice contiene valores de
columna en los cuales el índice es creado y la dirección del registro a la que el valor de
la columna pertenece.
Ejemplos Índices:
Cuando Creamos una tabla , si el id es “Primary key”, generará un índice ordenado
de manera que los id quedarán en secuencia:
de lo contrario si al generar la tabla, indicamos al id como “UNIQUE” generará un
índice no ordenado y los valores de los id estarán mezclados
6- TRANSACCIONES
Son unidades o secuencias de trabajo realizadas de forma ordenada y separada en una base de
datos. Normalmente representan cualquier cambio en la base de datos, y tienen dos objetivos
principales:
● Proporcionar secuencias de trabajo fiables que permitan poder recuperarse fácilmente
ante errores y mantener una base de datos consistente incluso frente a fallos del
sistema.
● Proporcionar aislamiento entre programas accediendo a la vez a la base de datos.
Una transacción es una propagación de uno o más cambios en la base de datos, ya sea cuando
se crea, se modifica o se elimina un registro. En la práctica suele consistir en la agrupación de
consultas SQL y su ejecución como parte de una transacción.
Propiedades
● Atomicidad: aseguran que todas las operaciones dentro de la secuencia de trabajo se
completen satisfactoriamente. Si no es así, la transacción se abandona en el punto del
error y las operaciones previas retroceden a su estado inicial.
● Consistencia: aseguran que la base de datos cambie estados en una transacción
exitosa.
● Aislamiento: permiten que las operaciones sean aisladas y transparentes unas de
otras.
● Durabilidad: aseguran que el resultado o efecto de una transacción completada
permanezca en caso de error del sistema.
Ejemplo Transacciones:
https://programacion.net/articulo/transacciones_en_sql_server_299
BLOQUEO
Los bloqueos de SQL Server son parte esencial del requisito de aislamiento y se utilizan para
bloquear los objetos afectados dentro de una operación. En el momento en que los objetos
están bloqueados, SQL Server no permitirá que otras operaciones lleguen a realizarse haciendo
cambios en los datos que se guardan en los objetos afectados por el bloqueo que se realiza.
Una vez liberado el bloqueo, al confirmar los cambios o al revertir los cambios al estado inicial,
se podrán realizar otras operaciones que permitirán hacer los cambios de datos que se
requieran. Es decir que cuando se realiza una operación, se antepone el bloqueo en un objeto,
el resto de las operaciones que se requieren para dar el acceso al objeto serán forzadas a
esperar hasta la liberación del bloqueo y que esa espera se registre con el tipo de espera
correcto.
Tipos de bloqueos
● Bloqueo exclusivo (X): este bloqueo asegurará que una página o fila se reserve
exclusivamente para la operación que impuso el bloqueo compartido, siempre y cuando
la operación mantenga el bloqueo.
● Bloqueo compartido (S): este bloqueo se lleva a cabo cuando se impone y reserva una
página o fila para que esté disponible solamente en caso de lectura, lo cual significa que
cualquier otra operación no podrá modificar el registro bloqueado mientras permanezca
el bloqueo.
● Bloqueo de actualización (U): este bloqueo se parece a un bloqueo exclusivo, pero a
diferencia del otro, este está diseñado para poder lograr ser más flexible. Se puede
imponer un bloqueo de actualización en un registro que ya incluya un bloqueo
compartido.
● Bloqueos de propósito (I): este bloqueo es un medio que se utiliza por una operación
para poder informar de otra operación sobre la intención de obtener un bloqueo. El
objetivo de dicho bloqueo es el de poder garantizar que los cambios realizados en los
datos se ejecuten de manera correcta evitando que otra operación logre un bloqueo en
el siguiente objeto realizado por orden jerárquico.
Ejemplo de Bloqueo:
Si dos empleados de una empresa están trabajando con un cliente X, estos no podrán acceder
al mismo tiempo a la entidad gracias a los bloqueos que evitan errores.
Caso 1:
Empleado 1 quiere consultar el año de nacimiento del cliente pero el Empleado 2 justo estaba
modificando alguno de los datos, si no existiera el bloqueo podría haber fallas graves.

Continuar navegando