Desarrollo Aplicaciones con SQL Server 2005
Introducción a:  Email: bernardo.robelo@gmail.com Ing. Bernardo Robelo
Ing. BARJ - 2008 PROCEDIMIENTOS FUNCIONES DE USUARIO VISTAS INTEGRIDAD DE DATOS TRIGGERS CURSORES AGENDA TRANSACT - SQL IN...
Ing. BARJ – 2008 Transact-SQL ¿Que es?
Transact-SQL Ing. BARJ – 2008 Lenguaje de Definición De Datos
Tipos de datos del sistema <ul><li>Numérico </li></ul><ul><ul><li>Entero </li></ul></ul><ul><ul><li>Numérico exacto </li><...
<ul><li>¿Qué son ? </li></ul><ul><li>¿Pará que se utilizan? </li></ul>Tipos de datos definidos por el usuario Ing. BARJ – ...
Tipos de datos definidos por el usuario <ul><ul><li>Los tipos de datos definidos por el usuario están basados en los tipos...
Implementación de la integridad de datos Ing. BARJ – IST – UPOLI - 2008
¿Que es la integridad de datos? Ing. BARJ – IST – UPOLI - 2008
Tipos de integridad de datos Ing. BARJ – IST – UPOLI - 2008 Integridad de dominio  ( columnas ) Integridad de entidad   (f...
Exigir integridad de los datos <ul><li>Integridad de datos declarativa </li></ul><ul><ul><li>Los criterios se definen en l...
Integridad de datos Ing. BARJ – IST – UPOLI - 2008
Determinación del tipo de restricción que se va a utilizar Ing. BARJ – IST – UPOLI - 2008 Tipo de integridad Tipo de restr...
Tipos de restricciones <ul><li>Restricciones DEFAULT </li></ul><ul><li>Restricciones CHECK </li></ul><ul><li>Restricciones...
¿Qué es un Indice Ing. BARJ – IST – UPOLI - 2008
Tipos de Indice <ul><li>CLUSTERED INDEX </li></ul><ul><ul><ul><li>Por Defecto se crean indices con las Llaves Primarias </...
¿Qué es una Vista? Ing. BARJ – IST – UPOLI - 2008
Introducción a las vistas Ing. BARJ – IST – UPOLI - 2008 EmployeeView Lastname  Firstname Davolio  Fuller  Leverling Nancy...
Ventajas de las vistas <ul><li>Centrar el interés en los datos de los usuarios </li></ul><ul><ul><li>Centrarse sólo en los...
Ejemplo:   Vista de tablas combinadas Ing. BARJ – IST – UPOLI - 2008 OrderID 10663 10827 10427 10451 10515 CustomerID BONA...
Uso de vistas para dividir datos <ul><li>Puede utilizar las vistas para dividir los datos en varios servidores o instancia...
Ing. BARJ – IST – UPOLI - 2008 Práctica:   Implementación de vistas
Práctica: Implementación de vistas Ing. BARJ – IST – UPOLI - 2008
¿Qué es un  procedimiento almacenado? Ing. BARJ – IST – UPOLI - 2008
Definición de procedimientos almacenados <ul><li>Colecciones con nombre de instrucciones Transact-SQL </li></ul><ul><li>En...
Ventajas de los procedimientos almacenados  <ul><li>Compartir la lógica de la aplicación </li></ul><ul><li>Exposición de l...
Creación de procedimientos almacenados <ul><li>Utilice la instrucción CREATE PROCEDURE para crearlos en la base de datos a...
Ejecución de procedimientos almacenados <ul><li>Ejecución de un procedimiento almacenado por separado </li></ul><ul><li>Ej...
Ejecución de procedimientos <ul><li>Paso de valores por el nombre del parámetro </li></ul><ul><li>Paso de valores por posi...
Devolución de valores mediante parámetros de salida Ing. BARJ – IST – UPOLI - 2008 <ul><li>CREATE PROCEDURE dbo.mathtutor ...
Control de mensajes de error <ul><li>La instrucción RETURN sale incondicionalmente de una consulta o procedimiento  </li><...
Ing. BARJ – IST – UPOLI - 2008 Práctica Procedimientos Almacenados
PROCEDIMIENTOS CON PARÁMETROS Ing. BARJ – IST – UPOLI - 2008
PROCEDIMIENTOS ALMACENADOS CON PARÁMETROS  CON VALORES POR DEFECTO Ing. BARJ – IST – UPOLI - 2008
PROCEDIMIENTOS ALMACENADOS CON PARÁMETROS  CON VALORES POR DEFECTO Ing. BARJ – IST – UPOLI - 2008
PROCEDIMIENTOS ALMACENADOS CON PARÁMETROS  CON VALORES POR DEFECTO Ing. BARJ – IST – UPOLI - 2008
Ing. BARJ – IST – UPOLI - 2008
VARIABLES DE SALIDA  EN PROCEDIMIENTOS ALMACENADOS Ing. BARJ – IST – UPOLI - 2008
VARIABLES DE SALIDA  EN PROCEDIMIENTOS ALMACENADOS Ing. BARJ – IST – UPOLI - 2008
Ejemplos Ing. BARJ – IST – UPOLI - 2008
Ejemplos Ing. BARJ – IST – UPOLI - 2008
¿Qué es una función definida por el usuario? Ing. BARJ – IST – UPOLI - 2008
¿Qué es una función definida por el usuario? <ul><li>Una función de usuario, se crea con el fin de automatizar una consult...
Uso de una función escalar definida por el usuario <ul><li>La cláusula RETURNS especifica el tipo de datos </li></ul><ul><...
Ing. BARJ – IST – UPOLI - 2008 Demostracion:   Creación de funciones definidas por el usuario
FUNCIONES DEFINIDAS POR EL USUARIO Ing. BARJ – IST – UPOLI - 2008 Declare Table
Funciones Escalares <ul><li>Veamos en el Enteprise Manager, la funcion creada, consultamos el apartado “Funciones definida...
Funciones de Tablas en Linea Ing. BARJ – IST – UPOLI - 2008
Funciones de Tablas Con Instrucciones Ing. BARJ – IST – UPOLI - 2008
Funciones con Definicion de Esquema Ing. BARJ – IST – UPOLI - 2008
Ing. BARJ – IST – UPOLI - 2008 Práctica:   Creación de funciones definidas por el usuario
Ejercicios Ing. BARJ – IST – UPOLI - 2008 Ver Solución
Ejercicios Ing. BARJ – IST – UPOLI - 2008 Solución
Ejercicios Ing. BARJ – IST – UPOLI - 2008
Ejercicios Ing. BARJ – IST – UPOLI - 2008
¿Que es un TRIGGER?   (DESENCADENADORES, DISPARADORES) Ing. BARJ – IST – UPOLI - 2008
¿Qué es un desencadenador? <ul><li>Un desencadenador es una clase especial de procedimiento almacenado que se ejecuta siem...
Consideraciones acerca del uso de desencadenadores <ul><li>Los desencadenadores son reactivos, mientras  que las restricci...
Funcionamiento de los desencadenadores anidados Ing. BARJ – IST – UPOLI - 2008 2 15  UnitsInStock + UnitsOnOrder  es < Reo...
Desencadenadores recursivos <ul><li>Activación recursiva de un desencadenador </li></ul><ul><li>Tipos de desencadenadores ...
Exigir reglas de empresa Ing. BARJ – IST – UPOLI - 2008 L os productos con pedidos pendientes no se pueden elimina r IF (S...
Consideraciones acerca del rendimiento <ul><li>Los desencadenadores trabajan rápidamente porque las tablas  insertadas  y ...
Ing. BARJ – IST – UPOLI - 2008 Demostracion:   TRIGGERS (DESENCADENADORES, DISPARADORES)
TRIGGERS Ing. BARJ – IST – UPOLI - 2008
TRIGGERS Ing. BARJ – IST – UPOLI - 2008
TRIGGERS Ing. BARJ – IST – UPOLI - 2008
Ing. BARJ – IST – UPOLI - 2008
TRIGGERS Ing. BARJ – IST – UPOLI - 2008
TRIGGERS Ing. BARJ – IST – UPOLI - 2008
Ing. BARJ – IST – UPOLI - 2008
Ing. BARJ – IST – UPOLI - 2008 CONCLUSIONES GENERALES
Ing. BARJ – IST – UPOLI - 2008 MUCHAS GRACIAS! [email_address] Ing. Bernardo Robelo http://bernardorobelo.blogspot.com
Ing. BARJ – IST – UPOLI - 2008
Ing. BARJ – IST – UPOLI - 2008
Ing. BARJ – IST – UPOLI - 2008
Upcoming SlideShare
Loading in …5
×

Programacion con SQL Server 2005

36,206 views

Published on

Tablas
Vistas
Store Procedures
Triggers
Constraint
http://bernardorobelo.blogspot.com/

Published in: Technology

Programacion con SQL Server 2005

  1. 1. Desarrollo Aplicaciones con SQL Server 2005
  2. 2. Introducción a: Email: bernardo.robelo@gmail.com Ing. Bernardo Robelo
  3. 3. Ing. BARJ - 2008 PROCEDIMIENTOS FUNCIONES DE USUARIO VISTAS INTEGRIDAD DE DATOS TRIGGERS CURSORES AGENDA TRANSACT - SQL INDICES
  4. 4. Ing. BARJ – 2008 Transact-SQL ¿Que es?
  5. 5. Transact-SQL Ing. BARJ – 2008 Lenguaje de Definición De Datos
  6. 6. Tipos de datos del sistema <ul><li>Numérico </li></ul><ul><ul><li>Entero </li></ul></ul><ul><ul><li>Numérico exacto </li></ul></ul><ul><ul><li>Numérico aproximado </li></ul></ul><ul><ul><li>Moneda </li></ul></ul><ul><li>Fecha y hora </li></ul><ul><li>Carácter y caracteres Unicode </li></ul><ul><li>Binario </li></ul><ul><li>Otros </li></ul>Ing. BARJ – IST – UPOLI - 2008
  7. 7. <ul><li>¿Qué son ? </li></ul><ul><li>¿Pará que se utilizan? </li></ul>Tipos de datos definidos por el usuario Ing. BARJ – IST – UPOLI - 2008
  8. 8. Tipos de datos definidos por el usuario <ul><ul><li>Los tipos de datos definidos por el usuario están basados en los tipos de datos disponibles a través de SQL Server 2005. </li></ul></ul><ul><ul><li>Los tipos de datos definidos por el usuario se pueden emplear para asegurar que un dato tenga las mismas características sobre múltiples tablas. </li></ul></ul>Ing. BARJ – IST – UPOLI - 2008
  9. 9. Implementación de la integridad de datos Ing. BARJ – IST – UPOLI - 2008
  10. 10. ¿Que es la integridad de datos? Ing. BARJ – IST – UPOLI - 2008
  11. 11. Tipos de integridad de datos Ing. BARJ – IST – UPOLI - 2008 Integridad de dominio ( columnas ) Integridad de entidad (filas) Integridad referencial ( entre tablas )
  12. 12. Exigir integridad de los datos <ul><li>Integridad de datos declarativa </li></ul><ul><ul><li>Los criterios se definen en la definición del objeto </li></ul></ul><ul><ul><li>Asegurada automáticamente por SQL Server </li></ul></ul><ul><ul><li>Implementada mediante restricciones, valores predeterminados y reglas </li></ul></ul><ul><li>Integridad de datos procedimental </li></ul><ul><ul><li>Los criterios se definen en una secuencia de comandos </li></ul></ul><ul><ul><li>Asegurada mediante secuencia de comandos </li></ul></ul><ul><ul><li>Implementada mediante desencadenadores y procedimientos almacenados </li></ul></ul>Ing. BARJ – IST – UPOLI - 2008
  13. 13. Integridad de datos Ing. BARJ – IST – UPOLI - 2008
  14. 14. Determinación del tipo de restricción que se va a utilizar Ing. BARJ – IST – UPOLI - 2008 Tipo de integridad Tipo de restricción Dominio DEFAULT CHECK REFERENTIAL Entidad PRIMARY KEY UNIQUE Referencial FOREIGN KEY CHECK
  15. 15. Tipos de restricciones <ul><li>Restricciones DEFAULT </li></ul><ul><li>Restricciones CHECK </li></ul><ul><li>Restricciones PRIMARY KEY </li></ul><ul><li>Restricciones UNIQUE </li></ul><ul><li>Restricciones FOREIGN KEY </li></ul><ul><li>Integridad referencial en cascada </li></ul>
  16. 16. ¿Qué es un Indice Ing. BARJ – IST – UPOLI - 2008
  17. 17. Tipos de Indice <ul><li>CLUSTERED INDEX </li></ul><ul><ul><ul><li>Por Defecto se crean indices con las Llaves Primarias </li></ul></ul></ul><ul><ul><ul><li>Son como capitulos en el Libro </li></ul></ul></ul><ul><ul><ul><li>Indice como la guia telefonica </li></ul></ul></ul><ul><ul><ul><li>Mantiene juntas los numeros de Lineas </li></ul></ul></ul><ul><li>NON-CLUSTERED INDEX </li></ul><ul><ul><ul><li>Son como guiones para acceder a los datos </li></ul></ul></ul><ul><ul><ul><li>Utilizado en llaves de varios campos </li></ul></ul></ul><ul><ul><ul><li>Es el Indice o Glosario </li></ul></ul></ul><ul><ul><ul><li>Son Atajos para acceder a los Datos </li></ul></ul></ul>Ing. BARJ – IST – UPOLI - 2008
  18. 18. ¿Qué es una Vista? Ing. BARJ – IST – UPOLI - 2008
  19. 19. Introducción a las vistas Ing. BARJ – IST – UPOLI - 2008 EmployeeView Lastname Firstname Davolio Fuller Leverling Nancy Andrew Janet Employees EmployeeID LastName Firstname Title 1 2 3 Davolio Fuller Leverling Nancy Andrew Janet ~~~ ~~~ ~~~ Vista del usuario USE Northwind GO CREATE VIEW dbo. Employee View AS SELECT LastName , Firstname FROM Employees
  20. 20. Ventajas de las vistas <ul><li>Centrar el interés en los datos de los usuarios </li></ul><ul><ul><li>Centrarse sólo en los datos importantes o adecuados </li></ul></ul><ul><ul><li>Limitar el acceso a los datos confidenciales </li></ul></ul><ul><li>Enmascarar la complejidad de la base de datos </li></ul><ul><ul><li>Ocultar el diseño de la base de datos compleja </li></ul></ul><ul><ul><li>Simplificar las consultas complejas, incluyendo las consultas distribuidas a datos heterogéneos </li></ul></ul><ul><li>Simplificar la administración de los permisos de usuario </li></ul><ul><li>Mejorar el rendimiento </li></ul><ul><li>Organizar los datos para exportarse a otras aplicaciones </li></ul>Ing. BARJ – IST – UPOLI - 2008
  21. 21. Ejemplo: Vista de tablas combinadas Ing. BARJ – IST – UPOLI - 2008 OrderID 10663 10827 10427 10451 10515 CustomerID BONAP BONAP PICCO QUICK QUICK ~~~ ~~~ ~~~ ~~~ ~~~ RequiredDate 1997-09-24 1998-01-26 1997-02-24 1997-03-05 1997-05-07 ShippedDate 1997-10-03 1998-02-06 1997-03-03 1997-03-12 1997-05-23 Orders Customers ShipStatusView USE Northwind GO CREATE VIEW dbo.ShipStatusView AS SELECT OrderID, ShippedDate, ContactName FROM Customers c INNER JOIN Orders o ON c.CustomerID = O.CustomerID WHERE RequiredDate < ShippedDate CustomerID BONAP PICCO QUICK CompanyName Bon app' Piccolo und mehr QUICK-Stop ContactName Laurence Lebihan Georg Pipps Horst Kloss OrderID 10264 10271 10280 1996-08-21 1996-08-29 1996-09-11 ShippedDate 1996-08-23 1996-08-30 1996-09-12 ContactName Laurence Lebihan Georg Pipps Horst Kloss
  22. 22. Uso de vistas para dividir datos <ul><li>Puede utilizar las vistas para dividir los datos en varios servidores o instancias de SQL Server </li></ul><ul><li>Cómo utiliza SQL Server las vistas para dividir datos </li></ul><ul><li>Cómo las vistas divididas mejoran el rendimiento </li></ul><ul><li>NO SE PUEDE </li></ul><ul><ul><li>No se puede incluir la cláusula ORDER BY </li></ul></ul><ul><ul><li>No se puede incluir la palabra clave INTO </li></ul></ul>Ing. BARJ – IST – UPOLI - 2008
  23. 23. Ing. BARJ – IST – UPOLI - 2008 Práctica: Implementación de vistas
  24. 24. Práctica: Implementación de vistas Ing. BARJ – IST – UPOLI - 2008
  25. 25. ¿Qué es un procedimiento almacenado? Ing. BARJ – IST – UPOLI - 2008
  26. 26. Definición de procedimientos almacenados <ul><li>Colecciones con nombre de instrucciones Transact-SQL </li></ul><ul><li>Encapsulado de tareas repetitivas </li></ul><ul><li>Aceptar parámetros de entrada y devolver valores </li></ul>Ing. BARJ – IST – UPOLI - 2008
  27. 27. Ventajas de los procedimientos almacenados <ul><li>Compartir la lógica de la aplicación </li></ul><ul><li>Exposición de los detalles de las tablas de la base de datos </li></ul><ul><li>Proporcionar mecanismos de seguridad </li></ul><ul><li>Mejorar el rendimiento </li></ul><ul><li>Reducir el tráfico de red </li></ul>Ing. BARJ – IST – UPOLI - 2008
  28. 28. Creación de procedimientos almacenados <ul><li>Utilice la instrucción CREATE PROCEDURE para crearlos en la base de datos activa </li></ul><ul><li>Puede anidar hasta 32 niveles </li></ul><ul><li>Use sp_help para mostrar información </li></ul>Ing. BARJ – IST – UPOLI - 2008 USE Northwind GO CREATE PROC dbo.OverdueOrders AS SELECT * FROM dbo.Orders WHERE RequiredDate < GETDATE() AND ShippedDate IS Null GO
  29. 29. Ejecución de procedimientos almacenados <ul><li>Ejecución de un procedimiento almacenado por separado </li></ul><ul><li>Ejecución de un procedimiento almacenado en una instrucción INSERT </li></ul>Ing. BARJ – IST – UPOLI - 2008 EXEC OverdueOrders INSERT INTO Customers EXEC EmployeeCustomer
  30. 30. Ejecución de procedimientos <ul><li>Paso de valores por el nombre del parámetro </li></ul><ul><li>Paso de valores por posición </li></ul>Ing. BARJ – IST – UPOLI - 2008 EXEC AddCustomer 'ALFKI2', 'Alfreds Futterkiste', 'Maria Anders', 'Sales Representative', 'Obere Str. 57', 'Berlin', NULL, '12209', 'Germany', '030-0074321' EXEC AddCustomer @CustomerID = 'ALFKI', @ContactName = 'Maria Anders', @CompanyName = 'Alfreds Futterkiste', @ContactTitle = 'Sales Representative', @Address = 'Obere Str. 57', @City = 'Berlin', @PostalCode = '12209', @Country = 'Germany', @Phone = '030-0074321'
  31. 31. Devolución de valores mediante parámetros de salida Ing. BARJ – IST – UPOLI - 2008 <ul><li>CREATE PROCEDURE dbo.mathtutor </li></ul><ul><ul><ul><li>@m1 smallint, </li></ul></ul></ul><ul><ul><li>@m2 smallint, </li></ul></ul><ul><ul><li>@result smallint OUTPUT </li></ul></ul><ul><li>AS </li></ul><ul><li>SET @result = @m1* @m2 </li></ul><ul><li>GO </li></ul><ul><li>DECLARE @answer smallint </li></ul><ul><li>EXECUTE mathtutor 5, 6, @answer OUTPUT </li></ul><ul><li>SELECT 'The result is: ' , @answer </li></ul><ul><li>The result is: 30 </li></ul>Resultados del procedimiento almacenado Ejecución del procedimiento almacenado Creación del procedimiento almacenado
  32. 32. Control de mensajes de error <ul><li>La instrucción RETURN sale incondicionalmente de una consulta o procedimiento </li></ul>Ing. BARJ – IST – UPOLI - 2008
  33. 33. Ing. BARJ – IST – UPOLI - 2008 Práctica Procedimientos Almacenados
  34. 34. PROCEDIMIENTOS CON PARÁMETROS Ing. BARJ – IST – UPOLI - 2008
  35. 35. PROCEDIMIENTOS ALMACENADOS CON PARÁMETROS CON VALORES POR DEFECTO Ing. BARJ – IST – UPOLI - 2008
  36. 36. PROCEDIMIENTOS ALMACENADOS CON PARÁMETROS CON VALORES POR DEFECTO Ing. BARJ – IST – UPOLI - 2008
  37. 37. PROCEDIMIENTOS ALMACENADOS CON PARÁMETROS CON VALORES POR DEFECTO Ing. BARJ – IST – UPOLI - 2008
  38. 38. Ing. BARJ – IST – UPOLI - 2008
  39. 39. VARIABLES DE SALIDA EN PROCEDIMIENTOS ALMACENADOS Ing. BARJ – IST – UPOLI - 2008
  40. 40. VARIABLES DE SALIDA EN PROCEDIMIENTOS ALMACENADOS Ing. BARJ – IST – UPOLI - 2008
  41. 41. Ejemplos Ing. BARJ – IST – UPOLI - 2008
  42. 42. Ejemplos Ing. BARJ – IST – UPOLI - 2008
  43. 43. ¿Qué es una función definida por el usuario? Ing. BARJ – IST – UPOLI - 2008
  44. 44. ¿Qué es una función definida por el usuario? <ul><li>Una función de usuario, se crea con el fin de automatizar una consulta que se realiza a menudo. </li></ul><ul><li>Funciones escalares </li></ul><ul><ul><li>Similar a una función integrada </li></ul></ul><ul><li>Funciones con valores de tabla de varias instrucciones </li></ul><ul><ul><li>Contenido como un procedimiento almacenado </li></ul></ul><ul><ul><li>Se hace referencia como una vista </li></ul></ul><ul><li>Funciones con valores de tabla en línea </li></ul><ul><ul><li>Similar a una vista con parámetros </li></ul></ul><ul><ul><li>Devuelve una tabla como el resultado de una instrucción SELECT única </li></ul></ul>Ing. BARJ – IST – UPOLI - 2008
  45. 45. Uso de una función escalar definida por el usuario <ul><li>La cláusula RETURNS especifica el tipo de datos </li></ul><ul><li>La función se define en un bloque BEGIN y END </li></ul><ul><li>El tipo de devolución puede ser cualquier tipo de datos, excepto text, ntext, image, cursor o timestamp </li></ul>Ing. BARJ – IST – UPOLI - 2008
  46. 46. Ing. BARJ – IST – UPOLI - 2008 Demostracion: Creación de funciones definidas por el usuario
  47. 47. FUNCIONES DEFINIDAS POR EL USUARIO Ing. BARJ – IST – UPOLI - 2008 Declare Table
  48. 48. Funciones Escalares <ul><li>Veamos en el Enteprise Manager, la funcion creada, consultamos el apartado “Funciones definidas por el usuario” </li></ul>Ing. BARJ – IST – UPOLI - 2008
  49. 49. Funciones de Tablas en Linea Ing. BARJ – IST – UPOLI - 2008
  50. 50. Funciones de Tablas Con Instrucciones Ing. BARJ – IST – UPOLI - 2008
  51. 51. Funciones con Definicion de Esquema Ing. BARJ – IST – UPOLI - 2008
  52. 52. Ing. BARJ – IST – UPOLI - 2008 Práctica: Creación de funciones definidas por el usuario
  53. 53. Ejercicios Ing. BARJ – IST – UPOLI - 2008 Ver Solución
  54. 54. Ejercicios Ing. BARJ – IST – UPOLI - 2008 Solución
  55. 55. Ejercicios Ing. BARJ – IST – UPOLI - 2008
  56. 56. Ejercicios Ing. BARJ – IST – UPOLI - 2008
  57. 57. ¿Que es un TRIGGER? (DESENCADENADORES, DISPARADORES) Ing. BARJ – IST – UPOLI - 2008
  58. 58. ¿Qué es un desencadenador? <ul><li>Un desencadenador es una clase especial de procedimiento almacenado que se ejecuta siempre que se intenta modificar los datos de una tabla que el desencadenador protege. </li></ul><ul><li>Asociación a una tabla </li></ul><ul><li>Invocación automática </li></ul><ul><li>Imposibilidad de llamada directa </li></ul><ul><li>Identificación con una transacción </li></ul>Ing. BARJ – IST – UPOLI - 2008
  59. 59. Consideraciones acerca del uso de desencadenadores <ul><li>Los desencadenadores son reactivos, mientras que las restricciones son proactivas </li></ul><ul><li>Las restricciones se comprueban antes </li></ul><ul><li>Las tablas pueden tener varios desencadenadores para cualquier acción </li></ul><ul><li>Comparación del estado de los datos antes y después de su modificación </li></ul>Ing. BARJ – IST – UPOLI - 2008
  60. 60. Funcionamiento de los desencadenadores anidados Ing. BARJ – IST – UPOLI - 2008 2 15 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 ProductID 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 15
  61. 61. Desencadenadores recursivos <ul><li>Activación recursiva de un desencadenador </li></ul><ul><li>Tipos de desencadenadores recursivos </li></ul><ul><ul><li>Recursividad directa , que se da cuando un desencadenador se ejecuta y realiza una acción que lo activa de nuevo </li></ul></ul><ul><ul><li>Recursividad indirecta , que se da cuando un desencadenador se activa y realiza una acción que activa un desencadenador de otra tabla </li></ul></ul><ul><li>Conveniencia del uso de los desencadenadores recursivos </li></ul>Ing. BARJ – IST – UPOLI - 2008
  62. 62. Exigir reglas de empresa Ing. BARJ – IST – UPOLI - 2008 L os productos con pedidos pendientes no se pueden elimina r IF (Select Count (*) FROM [Order Details] INNER JOIN deleted ON [Order Details].ProductID = deleted.ProductID ) > 0 ROLLBACK TRANSACTION La instrucción DELETE se ejecuta en la tabla Product El código del desencadenador comprueba la tabla Order Details ' No puede procesarse la transacción ' ' Este producto tiene historial de pedidos ' Se deshace la transacción 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 Products ProductID UnitsInStock … … 1 3 4 15 10 65 20 2 0
  63. 63. Consideraciones acerca del rendimiento <ul><li>Los desencadenadores trabajan rápidamente porque las tablas insertadas y eliminadas están en la caché </li></ul><ul><li>El tiempo de ejecución está determinado por: </li></ul><ul><ul><li>Número de tablas a las que se hace referencia </li></ul></ul><ul><ul><li>Número de filas afectadas </li></ul></ul><ul><li>Las acciones contenidas en un desencadenador forman parte de una transacción </li></ul>Ing. BARJ – IST – UPOLI - 2008
  64. 64. Ing. BARJ – IST – UPOLI - 2008 Demostracion: TRIGGERS (DESENCADENADORES, DISPARADORES)
  65. 65. TRIGGERS Ing. BARJ – IST – UPOLI - 2008
  66. 66. TRIGGERS Ing. BARJ – IST – UPOLI - 2008
  67. 67. TRIGGERS Ing. BARJ – IST – UPOLI - 2008
  68. 68. Ing. BARJ – IST – UPOLI - 2008
  69. 69. TRIGGERS Ing. BARJ – IST – UPOLI - 2008
  70. 70. TRIGGERS Ing. BARJ – IST – UPOLI - 2008
  71. 71. Ing. BARJ – IST – UPOLI - 2008
  72. 72. Ing. BARJ – IST – UPOLI - 2008 CONCLUSIONES GENERALES
  73. 73. Ing. BARJ – IST – UPOLI - 2008 MUCHAS GRACIAS! [email_address] Ing. Bernardo Robelo http://bernardorobelo.blogspot.com
  74. 74. Ing. BARJ – IST – UPOLI - 2008
  75. 75. Ing. BARJ – IST – UPOLI - 2008
  76. 76. Ing. BARJ – IST – UPOLI - 2008

×