Implementación de desencadenadores

Slides:



Advertisements
Presentaciones similares
Escuchamos 1 2 hablas 2 3 L o s R e c u a d r o s E s c o n d i d o s Yo/ tomar Ellas/ estudiar Nosotros/ escuchar Tú/ hablar Los Verbos AR.
Advertisements

CREATE VIEW nombre [ ( columna [,...n ] ) ] AS sentencia_select [ WITH CHECK OPTION ] 1.nombre Es el nombre de la vista. 2.Se debe tener permisos CREATE.
You need to improve the way you write and think in Spanish - Time This is an interactive presentation. You need your work sheet, your pencil, and your.
Telling Time (Cómo decir la hora).
Maestría en Data Mining
Las Palabras Interrogativas
MOVIMIENTO JOVENES DE LA CALLE CIUDAD DE GUATEMALA la storia la historia lhistoire the history strada calle rue street.
While Leonel Morales Díaz Ingeniería Simple Disponible en: Copyright 2008 by Leonel.
1 INFORME RESUMEN SOBRE EL NIVEL DE UTILIZACION DE LAS TIC EN LAS EMPRESAS GALLEGAS (MICROEMPRESAS, resultados provisionales) 29 de julio de 2004.
Delete en tablas: titulacion. Puedo eliminar cualquier fila de una tabla? Restriccion de integridad: Restrict/Cascade.
Conceptos Básicos del lenguaje de programación COBOL
MSQL OPERADORES BIT A BIT & a & b Operador de BIT AND. I a l b Operador de BIT OR. < < a >
Rocío Contreras Águila Primer Semestre 2010
Ejercicios Solemne 2 Parte 1
Implementación de procedimientos almacenados
Query Direcciones SELECT Nombre, Apellido, Ciudad FROM Direcciones;
Esquema de Mapeo de Base de Datos Relacionales a Objetos
Spatial Database Bases de Datos Espaciales MOTORES COMERCIALES Oracle Spatial.
Implementación de funciones definidas por el usuario
Trabajo con subconsultas
Implementación de procedimientos almacenados. Introducción a los procedimientos almacenados Creación, ejecución, modificación y eliminación de procedimientos.
Implementación de vistas
Modificación de datos.
Introducción a Transact-SQL
Recuperación de datos. Introducción Recuperar datos de tablas mediante la instrucción SELECT Filtrar los datos Dar formato a los conjuntos de resultados.
Implementación de la integridad de datos
Combinación de varias tablas. Introducción Uso de alias en los nombres de tablas Combinación de datos de varias tablas Combinación de varios conjuntos.
Procedimientos para agrupar y resumir datos
ARQUITECTURA DE COMPUTADORES - PIPELINING
SABER Y CONOCER The verbs saber and conocer also have an irregular YO form. Both of these verbs mean to know. Saber is used to express knowledge of simple.
Español 1 el 30 de agosto. Bell Dinger – el 30 de agosto
El treinta y uno de agosto
Español 1 ¿Qué hora es?. Bell Dinger :Escriban los números en español…
Telling Time Unidad 2 Etapa 2. Telling time in Spanish : Its 2:00.--Son las dos. Its 3:00.--Son las tres. Its 4:00.--Son las cuatro. Its 5:00--Son las.
Informal Speaking AP TestSimulated Conversation. Description The first part in the speaking section will include a task that measures speaking skills.
INTEGRIDAD, INTEGRIDAD REFERENCIAL
MATLAB.
Procedimientos Almacenados y Disparadores
SQL Base de Datos LENGUAJES DE CONSULTA AR y CR no pueden ser tomados como base para implementar porque: Poseen sintaxis compleja No permiten.
PL/SQL Francisco Moreno Universidad Nacional. Funciones Si un procedimiento tiene solo un parámetro de salida, se puede remplazar por una función y esta.
Después de completar esta Lección, será capaz de: Limitar las filas recuperadas por una consulta Ordenar las filas recuperadas por una consulta.
Bases de Datos Relacionales Preparó: Ismael Castañeda Fuentes Fuentes:Manuales Sybase Manuales SQL Server Manuales Oracle BATCHS.
BASES DE DATOS Ejercicio No. 6. Ejecutar las siguientes sentencias SELECT nombre, ueldo FROM user.tabla_profesor WHERE filtro 1 UPDATE user.tabla_profesor.
CULENDARIO 2007 Para los Patanes.
Administración de Servidores de Bases de Datos Bases de Datos de Usuarios Caso particular Adaptive Server Enterprise.
La Lección del Repaso Antes de entrar en la clase de Español IV, necesita saber esta información.
* Fuente: Sondeo del Consumidor de la Comisión de la UE, GfK. Expectativas sobre la situación.
Preguntas de conversación Capítulo 2 Exprésate I.
Las Estaciones y El Tiempo Day 6 H AGA A HORA 21 de agosto Translate the following times to Spanish: Translate the following times to Spanish: It’s one.
Repaso (parte 2) Español 2. Como escribir una pregunta…  Adónde (to where)  Cómo (how)  Cuál/Cuáles (which ones)  Cuándo (when)  Cuánto (how much)
Quantity How much? How many?
Los números Mathematical problem solving Existence/Non-existence Quantity How much? How many?
What uses could you give to numbers in Spanish? Think for one minute, and then brainstorm!!!!!
+19 Diciembre 2014 Indicador > +20 Indicador 0 a +20 Indicador 0 a -20 Indicador < -20 Total Unión Europea: +5 Indicador > +20 Indicador 0 a +20 Indicador.
Control del Acceso de los Usuarios
UNITA - IBARRA TRIGGERS
AA Gerardo Morgade Donato AA Isnel Leyva Herbella.
Lenguaje Estructurado de Consultas
Querys a bases de datos con MS ACCESS. DEFINAMOS LOS TERMINOS: DML=Lenguaje de manipulación de datos Las sentencias DML permiten generar consultas para.
DML Transact SQL Sesión X Triggers. Duración 2 Horas.
Implementación de funciones definidas por el usuario.
6 Triggers ORACLE - III Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega.
UNIDAD IV. Diseño de Base de Datos Relacionales
BASE DE DATOS IUPSM CLASE PRACTICA. PROF. ING. JOSE L GUZMAN H.
Introducción a Transact-SQL BASES DE DATOS II. Introducción E lenguaje de programación Transact-SQL Tipos de instrucciones de Transact-SQL Elementos de.
Structure Query Languaje
UN DISPARADOR O TRIGGER es un procedimiento que se ejecuta cuando se cumple una condición establecida al realizar una operación. Es una rutina autónoma.
Modificación de datos. Introducción Uso de transacciones Inserción de datos Eliminación de datos Actualización de datos Consideraciones acerca del rendimiento.
TRIGGERS VISTAS Y PROCESOS Ing. Fabiola Nilda Perez Oliver
Transcripción de la presentación:

Implementación de desencadenadores

Introducción Introducción a los desencadenadores Definición de desencadenadores Funcionamiento de los desencadenadores Ejemplos de desencadenadores Consideraciones acerca del rendimiento

Introducción a los desencadenadores ¿Qué es un desencadenador? Uso de los desencadenadores Consideraciones acerca del uso de desencadenadores

¿Qué es un desencadenador? Asociación a una tabla Invocación automática Imposibilidad de llamada directa Identificación con una transacción

Uso de los desencadenadores Cambios en cascada en tablas relacionadas de una base de datos Exigir una integridad de datos más compleja que una restricción CHECK Definición de mensajes de error personalizados Mantenimiento de datos no normalizados Comparación del estado de los datos antes y después de su modificación

Consideraciones acerca del uso de desencadenadores Los desencadenadores son reactivos, mientras que las restricciones son proactivas Las restricciones se comprueban antes Las tablas pueden tener varios desencadenadores para cualquier acción Los propietarios de las tablas pueden designar el primer y último desencadenador que se debe activar Debe tener permiso para ejecutar todas las instrucciones definidas en los desencadenadores Los propietarios de tablas no pueden crear desencadenadores AFTER en vistas o en tablas temporales

Definición de desencadenadores Creación de desencadenadores Alteración y eliminación de desencadenadores

Creación de desencadenadores Necesidad de los permisos adecuados Imposibilidad de incluir determinadas instrucciones Use Northwind GO CREATE TRIGGER Empl_Delete ON Employees FOR DELETE AS IF (SELECT COUNT(*) FROM Deleted) > 1 BEGIN RAISERROR( 'You cannot delete more than one employee at a time.', 16, 1) ROLLBACK TRANSACTION END

Alteración y eliminación de desencadenadores Alteración de un desencadenador Cambios en la definición sin quitar el desencadenador Deshabilitación o habilitación de un desencadenador Eliminación de un desencadenador USE Northwind GO ALTER TRIGGER Empl_Delete ON Employees FOR DELETE AS IF (SELECT COUNT(*) FROM Deleted) > 6 BEGIN RAISERROR( 'You cannot delete more than six employees at a time.', 16, 1) ROLLBACK TRANSACTION END

Funcionamiento de los desencadenadores Funcionamiento de un desencadenador INSERT Funcionamiento de un desencadenador DELETE Funcionamiento de un desencadenador UPDATE Funcionamiento de un desencadenador INSTEAD OF Funcionamiento de los desencadenadores anidados Desencadenadores recursivos

Funcionamiento de un desencadenador INSERT Ejecución de acciones TRIGGER Order Details OrderID 10522 10523 10524 ProductID 10 41 7 UnitPrice 31.00 9.65 30.00 Quantity 7 9 24 Discount 0.2 0.15 0.0 5 19.00 2 0.2 Trigger Code: USE Northwind CREATE TRIGGER OrdDet_Insert ON [Order Details] FOR INSERT AS UPDATE P SET UnitsInStock = (P.UnitsInStock – I.Quantity) FROM Products AS P INNER JOIN Inserted AS I ON P.ProductID = I.ProductID Instrucción INSERT en una tabla con un desencadenador INSERT Instrucción INSERT registrada Acción del desencadenador ejecutada 1 2 3 Instrucción INSERT en tabla con desencadenador INSERT INSERT [Order Details] VALUES (10525, 2, 19.00, 5, 0.2) Order Details OrderID ProductID UnitPrice Quantity Discount UPDATE P SET UnitsInStock = (P.UnitsInStock – I.Quantity) FROM Products AS P INNER JOIN Inserted AS I ON P.ProductID = I.ProductID 10522 10523 10524 10 41 7 31.00 9.65 30.00 7 9 24 0.2 0.15 0.0 5 19.00 2 0.2 10523 Products ProductID UnitsInStock … 1 2 3 4 15 10 65 20 Instrucción INSERT registrada inserted 10523 2 19.00 5 0.2 2 15

Funcionamiento de un desencadenador DELETE USE Northwind CREATE TRIGGER Category_Delete ON Categories FOR DELETE AS UPDATE P SET Discontinued = 1 FROM Products AS P INNER JOIN deleted AS d ON P.CategoryID = d.CategoryID Products ProductID Discontinued … 1 2 3 4 0 0 0 Acción del desencadenador ejecutada Instrucción DELETE en una tabla con un desencadenador DELETE Instrucción DELETE registrada Acción del desencadenador ejecutada 1 2 3 Instrucción DELETE en tabla con desencadenador DELETE Instrucción DELETE en tabla con desencadenador DELETE Categories CategoryID 1 2 3 CategoryName Beverages Condiments Confections Description Soft drinks, coffees… Sweet and savory … Desserts, candies, … Picture 0x15… 0x15… 0x15… Cheeses Dairy Products 4 DELETE Categories WHERE CategoryID = 4 2 1 UPDATE P SET Discontinued = 1 FROM Products AS P INNER JOIN deleted AS d ON P.CategoryID = d.CategoryID Deleted 4 Dairy Products Cheeses 0x15… Instrucción DELETE registrada

Funcionamiento de un desencadenador UPDATE Instrucción UPDATE en una tabla con un desencadenador UPDATE Instrucción UPDATE registrada como instrucciones INSERT y DELETE Acción del desencadenador ejecutada 1 2 3 Ejecución de acciones TRIGGER USE Northwind GO CREATE TRIGGER Employee_Update ON Employees FOR UPDATE AS IF UPDATE (EmployeeID) BEGIN TRANSACTION RAISERROR ('Transaction cannot be processed.\ ***** Employee ID number cannot be modified.', 10, 1) ROLLBACK TRANSACTION No se puede procesar la transacción. ***** No se puede modificar el número de miembro Employees EmployeeID LastName FirstName Title HireDate 1 2 3 4 Davolio Barr Leverling Peacock Nancy Andrew Janet Margaret Sales Rep. R ~~~ Fuller Vice Pres. Instrucción UPDATE para una tabla con un desencadenador UPDATE definido UPDATE Employees SET EmployeeID = 17 WHERE EmployeeID = 2 Employees EmployeeID LastName FirstName Title HireDate 1 2 3 4 Davolio Barr Leverling Peacock Nancy Andrew Janet Margaret Sales Rep. R ~~~ Fuller Vice Pres. Instrucción UPDATE registrada como instrucciones INSERT y DELETE insertada 17 Fuller Andrew Vice Pres. ~~~ eliminada 2 Fuller Andrew Vice Pres. ~~~

Funcionamiento de un desencadenador INSTEAD OF El desencadenador INSTEAD OF puede estar en una tabla o vista La acción que inicia el desencadenador no se produce Permite actualizaciones en vistas que no se han actualizado previamente 1 2 3 Crea una vista que combina dos o más tablas CREATE VIEW Customers AS SELECT * FROM CustomersMex UNION SELECT * FROM CustomersGer Se ejecuta UPDATE en la vista Customers CustomerID CompanyName Country Phone … ALFKI ANATR ANTON Alfreds Fu… Ana Trujill… Antonio M… Germany Mexico Mexico 030-0074321 (5) 555-4729 (5) 555-3932 ~~~ El desencadenador INSTEAD OF dirige la actualización a la tabla base ALFKI Alfreds Fu… Germany 030-0074321 ~~~ La inserción original a la vista Customers no se produce CustomersMex CustomerID CompanyName Country Phone … ANATR ANTON CENTC Ana Trujill… Antonio M… Centro Co… Mexico (5) 555-4729 (5) 555-3932 (5) 555-3392 ~~~ CustomersGer CustomerID CompanyName Country Phone … ALFKI BLAUS DRACD Alfreds Fu… Blauer Se… Drachenb… Germany Germany Germany 030-0074321 0621-08460 0241-039123 ~~~ ALFKI Alfreds Fu… Germany 030-0074321 ~~~

Funcionamiento de los desencadenadores anidados UnitsInStock + UnitsOnOrder es < ReorderLevel para ProductID 2 OrDe_Update La realización de un pedido provoca la ejecución del desencadenador OrDe_Update Se ejecuta la instrucción UPDATE en la tabla Products InStock_Update Products ProductID UnitsInStock … 1 3 4 15 15 65 20 Se ejecuta el desencadenador InStock_Update Envía un mensaje Order_Details OrderID 10522 10523 10524 10 41 7 UnitPrice 31.00 9.65 30.00 Quantity 7 9 24 Discount 0.2 0.15 0.0 10525 19.00 2 0.2 5 2 2 15 15

Desencadenadores recursivos Activación recursiva de un desencadenador Tipos de desencadenadores recursivos Recursividad directa, que se da cuando un desencadenador se ejecuta y realiza una acción que lo activa de nuevo Recursividad indirecta, que se da cuando un desencadenador se activa y realiza una acción que activa un desencadenador de otra tabla Conveniencia del uso de los desencadenadores recursivos

Ejemplos de desencadenadores Exigir la integridad de los datos Exigir reglas de empresa

Exigir la integridad de los datos CREATE TRIGGER BackOrderList_Delete ON Products FOR UPDATE AS IF (SELECT BO.ProductID FROM BackOrders AS BO JOIN Inserted AS I ON BO.ProductID = I.Product_ID ) > 0 BEGIN DELETE BO FROM BackOrders AS BO INNER JOIN Inserted AS I ON BO.ProductID = I.ProductID END Products BackOrders ProductID UnitsInStock … … ProductID UnitsOnOrder … 1 3 4 15 10 65 20 1 12 3 15 10 65 Actualizada 2 15 El desencadenador elimina la fila 2 15

Exigir reglas de empresa Los productos con pedidos pendientes no se pueden eliminar IF (Select Count (*) FROM [Order Details] INNER JOIN deleted ON [Order Details].ProductID = deleted.ProductID ) > 0 ROLLBACK TRANSACTION Se deshace la transacción La instrucción DELETE se ejecuta en la tabla Product El código del desencadenador comprueba la tabla Order Details Products ProductID UnitsInStock … 1 3 4 15 10 65 20 2 Products ProductID UnitsInStock … 1 2 3 4 15 10 65 20 Order Details OrderID 10522 10523 10524 10525 ProductID 10 2 41 7 UnitPrice 31.00 19.00 9.65 30.00 Quantity 7 9 24 Discount 0.2 0.15 0.0 9 'No puede procesarse la transacción' 'Este producto tiene historial de pedidos'

Consideraciones acerca del rendimiento Los desencadenadores trabajan rápidamente porque las tablas insertadas y eliminadas están en la caché El tiempo de ejecución está determinado por: Número de tablas a las que se hace referencia Número de filas afectadas Las acciones contenidas en un desencadenador forman parte de una transacción