Laboratorio de Bases de Datos
|
|
|
- Elena Arroyo Navarro
- hace 9 años
- Vistas:
Transcripción
1 Laboratorio de Bases de Datos Unidad V Departamento de Electricidad, Electrónica y Computación Facultad de Ciencias Exactas y Tecnología Universidad Nacional de Tucumán Primer Semestre 2016
2 Introducción [1 4] Creación Recomendaciones Modificación y borrado 2
3 Introducción [2 4] Parámetros de entrada Parámetros de salida Mensajes de error Manejo de errores 3
4 Introducción [3 4] Administración Anidamiento y recursividad Ejemplos 4
5 Introducción [4 4] Creación Administración 5
6 [1 24] Creación Recomendaciones Modificación y borrado Procedimiento Almacenado (Stored Procedure): Colección de sentencias SQL, con un nombre, almacenadas en el servidor dentro de la BD. Finalidad: Encapsular tareas repetitivas 6
7 [2 24] Creación Recomendaciones Modificación y borrado Características: Soportan declaración de variables, ejecución condicional y otras características de programación. Aceptan parámetros de entrada y devuelven valores. Devuelven un valor de estado que indica éxito o falla. Pueden llamar a otros procedimientos almacenados. 7
8 [3 24] Creación Recomendaciones Modificación y borrado Tipos: Del sistema Locales Temporales Remotos Extendidos 8
9 [4 24] Creación Recomendaciones Modificación y borrado del sistema: Devuelven información de las tablas del sistema y ejecutan tareas de mantenimiento. MySQL no tiene estos tipos de procedimientos. En SQL Server se almacenan en la BD master y sus nombres comienzan con sp_: sp_help 9
10 [5 24] Creación Recomendaciones Modificación y borrado locales: Creados en las BD de usuario individuales. temporales: En SQL Server sus nombres empiezan con # o ## (si son locales o globales). No son soportados por MySQL. 10 Los procedimientos almacenados temporales se crean siempre en la BD tempdb.
11 [6 24] Creación Recomendaciones Modificación y borrado remotos: Soportan la funcionalidad de consultas y operaciones distribuidas. extendidos: Se ejecutan fuera del ambiente del servidor. No son soportados por MySQL. En SQL Server, sus nombres comienzan con xp_. 11 Los procedimientos almacenados extendidos son funciones dentro de una DLL que incrementan la funcionalidad de SQL Server. Ejemplo: EXEC master..xp_cmdshell 'dir c:\'
12 [7 24] Creación Recomendaciones Modificación y borrado Ventajas: Encapsulan la lógica de negocio y crean una lógica de la aplicación reusable. Ocultan a los usuarios la complejidad subyacente y detalles internos de la BD. Proveen mecanismos de seguridad. 12 Las reglas o políticas de negocio encapsuladas en los procedimientos se pueden modificar en un único lugar. Todos los clientes pueden usar los mismos procedimientos almacenados asegurándose un acceso consistente a los datos. Si todas las funciones de negocio se soportan mediante un conjunto de procedimientos almacenados, los usuarios no deben acceder a las tablas directamente. Se puede asignar permisos a los usuarios para ejecutar los procedimientos almacenados, aún cuando no tengan permisos para acceder a las tablas o vistas a que hacen referencia los mismos.
13 [8 24] Creación Recomendaciones Modificación y borrado Ventajas: Mejoran el rendimiento. Reducen el tráfico en la red. Reducen la vulnerabilidad debido a los ataques de SQL injection. 13 Los procedimientos almacenados implementan varias tareas mediante una serie de sentencias SQL. Se puede aplicar lógica condicional a los resultados de las primeras sentencias para determinar las siguientes. Todas estas sentencias forman parte de un único plan de ejecución. En vez de mandar miles de sentencias SQL por la red, los usuarios mandan una única sentencia (el llamado al procedimiento) y reciben la respuesta. Mediante el uso de parámetros en el código SQL se reduce la posibilidad que se puedan embeber sentencias SQL en los valores de los parámetros.
14 [9 24] Creación Recomendaciones Modificación y borrado Ejemplo #1 de SQL injection: 1. Campo de texto llamado UserId 2. Se lee el campo de texto: txtuserid = getrequeststring("userid"); 3. Se arma la sentencia SQL: txtsql="select * FROM Users WHERE UserId=" + txtuserid; 14
15 [10 24] Creación Recomendaciones Modificación y borrado Ejemplo #1 de SQL injection: 4. Se ingresa 105 or 1=1 en el campo de texto 5. La sentencia quedaría: SELECT * FROM Users WHERE UserId = 105 or 1=1 6. Como 1=1 siempre es True, se muestra todo el contenido de la tabla Users 15
16 [11 24] Creación Recomendaciones Modificación y borrado Ejemplo #2 de SQL injection: 1. Campo de texto llamado UserId 2. Se lee el campo de texto: txtuserid = getrequeststring("userid"); 3. Se arma la sentencia SQL: txtsql="select * FROM Users WHERE UserId=" + txtuserid; 16
17 [12 24] Creación Recomendaciones Modificación y borrado Ejemplo #2 de SQL injection: 4. Se ingresa 105; DROP TABLE Suppliers en el campo de texto 5. La sentencia quedaría: SELECT * FROM Users WHERE UserId = 105; DROP TABLE Suppliers 6. Se borra toda la tabla Suppliers 17
18 [13 24] Creación Recomendaciones Modificación y borrado Plan de ejecución: Es el resultado del cálculo realizado por el optimizador de consultas para determinar el modo más eficiente de implementar una consulta. 2 planes: Real: muestra cómo se ejecutó una consulta Estimado: muestra cómo se ejecutaría una consulta 18 Para una determinada consulta, se puede ver el plan de ejecución real que se ejecutó, o la forma en que el SGBDR ejecutará la consulta (plan estimado). Estos planes pueden diferir ya que por ejemplo, las estadísticas pueden estar desactualizadas (ver más adelante).
19 [14 24] Creación Recomendaciones Modificación y borrado Procesos que se realizan cuando se ejecuta una consulta: Análisis sintáctico (parsing) Normalización Compilación Optimización 19 Cuando se ejecuta una consulta, el servidor realiza una serie de procesos con la finalidad de brindar la información solicitada, o guardarla, de la forma más rápida posible, conservando la integridad de datos.
20 [15 24] Creación Recomendaciones Modificación y borrado Análisis sintáctico (parsing): Controla que consulta esté bien escrita, es decir, bien formada. No se controlan los nombres de los objetos o columnas. La salida de este proceso se llama árbol de consulta. 20
21 [16 24] Creación Recomendaciones Modificación y borrado Normalización: Verifica los nombres de objetos y columnas, los tipos de datos, la presencia de funciones de agregación, el uso de alias o sinónimos que se deban resolver, etc. La salida de este proceso es la entrada del proceso de compilación. 21
22 [17 24] Creación Recomendaciones Modificación y borrado Compilación: Construye planes de ejecución teniendo en cuenta la salida del proceso anterior. La salida de este proceso es la entrada del proceso de optimización. 22
23 [18 24] Creación Recomendaciones Modificación y borrado Optimización: Evalúa los distintos planes de ejecución y elige el de menor costo (el plan que considere que ejecutará la consulta más rápidamente usando la menor cantidad de recursos). Para la elección del plan tiene en cuenta las estadísticas, los operadores en la cláusula WHERE, el uso de JOIN, UNION, GROUP BY y ORDER BY. 23 Las estadísticas se obtienen de columnas e índices dentro de la BD, y describen la distribución de los datos y el grado de unicidad de los mismos. Por defecto, las estadísticas se crean y actualizan automáticamente para todos los índices y para cualquier columna que aparezca en un WHERE o JOIN. Si las sentencias fueran DDL (Data Definition Language), no habría una forma mejor que otra para crear una tabla por ejemplo, por lo que habría un único plan de ejecución.
24 [19 24] Creación Recomendaciones Modificación y borrado Optimización: Para determinar el mejor plan, el optimizador utiliza las estadísticas y recorre los distintos planes, prueba distintos tipos de JOINs, modifica el orden de los JOINs, prueba distintos índices, etc. A cada paso de un plan le asigna un número, que representa el tiempo estimado para ejecutarlo. La suma de estos tiempos es el tiempo estimado (costo) de un plan. 24 A veces el optimizador selecciona un plan no muy eficiente si considera que le tomará más tiempo evaluar muchos planes. Si se tiene una consulta simple, por ejemplo una única tabla sin índices ni funciones de agregación, en lugar de consumir tiempo intentando calcular el plan más óptimo, el optimizador puede utilizar un plan simple
25 [20 24] Creación Recomendaciones Modificación y borrado Optimización: Una vez elegido el plan de ejecución, el mismo se guarda en el cache de procedimientos. Con el plan de ejecución elegido y guardado en el cache de procedimientos, se ejecuta la consulta (según el plan). 25
26 [21 24] Creación Recomendaciones Modificación y borrado Primera ejecución de un procedimiento: Se arma su plan de ejecución y se lo guarda en el cache de procedimientos. Siguientes ejecuciones: Reutilizan el plan de ejecución que ya está en memoria (evitan tener que volver a crearlo). 26 El cache de procedimientos es un área de memoria que guarda temporalmente los planes de ejecución compilados. Está formado por una serie de páginas que contienen los planes de ejecución y cuyo tamaño fluctúa dinámicamente de acuerdo a los niveles de actividad.
27 [22 24] Creación Recomendaciones Modificación y borrado Permanencia de un plan de ejecución en memoria: Depende del tiempo requerido para su recompilación (costo). Depende de su frecuencia de uso (edad). La reutilización de los planes de ejecución es una de las mayores ventajas de los procedimientos. 27
28 [23 24] Creación Recomendaciones Modificación y borrado En SQL Server, para ver los planes de ejecución, además de la interfaz gráfica, se puede usar: SET SHOWPLAN_XML ON: plan de ejecución estimado en formato XML. SET SHOWPLAN_TEXT ON: plan de ejecución estimado en formato texto. SET STATISTICS XML ON: plan de ejecución real en formato XML. SET STATISTICS PROFILE ON: plan de ejecución real en formato texto. 28
29 [24 24] Creación Recomendaciones Modificación y borrado En MySQL, para ver los planes de ejecución, además de la interfaz gráfica, se puede usar: EXPLAIN + Consulta: plan de ejecución real. 29
30 Creación [1 8] Creación Recomendaciones Modificación y borrado Consideraciones: Se emplea la sentencia CREATE PROCEDURE. Pueden referenciar tablas, procedimientos y tablas temporales. vistas, otros En SQL Server la sentencia CREATE PROCEDURE es un batch por si mismo. 30 En el caso de SQL server, también se puede crear un procedimiento desde SSMS. En MySQL también se lo puede hacer desde algún entorno gráfico (Workbench por ejemplo). Si un procedimiento crea una tabla temporal local, ésta deja de existir cuando termina la ejecución del procedimiento.
31 Creación [2 8] Creación Recomendaciones Modificación y borrado SQL Server: CREATE PROC esquema1.overdue_books AS SELECT * FROM esquema2.loan WHERE due_date < GETDATE() GO 31 En el caso de SQL server, se puede emplear la sentencia CREATE PROCEDURE o su forma abreviada CREATE PROC. Los nombres de los procedimientos se guardan en la tabla de sistema sysobjects y los códigos en la tabla syscomments.
32 Creación [3 8] Creación Recomendaciones Modificación y borrado MySQL: DELIMITER // CREATE PROCEDURE verempleados() BEGIN SELECT * FROM Employees; END // DELIMITER ; 32 En el caso de MySQL la primer sentencia DELIMITER cambia el delimitador por defecto (;) a // ya que se quiere pasar el procedimiento almacenado al servidor como un todo, en lugar de dejar que la herramienta interprete cada sentencia por vez. El segundo DELIMITER restituye el delimitador por defecto.
33 Creación [4 8] Creación Recomendaciones Modificación y borrado Ejecución en SQL Server: se emplea la sentencia EXECUTE seguida del nombre del procedimiento y sus parámetros. EXECUTE esquema1.overdue_books Ejecución en MySQL: se emplea la sentencia CALL seguida del nombre del procedimiento y sus parámetros. CALL verempleados(); 33 En SQL Server se puede usar la forma abreviada de EXECUTE: EXEC. En MySQL si el procedimiento no lleva parámetros, también se lo puede llamar sin los mismos.
34 Creación [5 8] Creación Recomendaciones Modificación y borrado En SQL Server también se pueden ejecutar los procedimientos como parte de una sentencia INSERT, la cual puede poblar una tabla con el resultado devuelto por un procedimiento: INSERT INTO esquema1.customers EXEC esquema2.employee_customer 34 Para que funcione el ejemplo, la tabla debe existir y los tipos de datos y columnas deben coincidir con lo devuelto por el procedimiento.
35 Creación [6 8] Creación Recomendaciones Modificación y borrado Los procedimientos pueden anidarse (un procedimiento llama a otro): El nivel nivel de anidamiento es limitado. Si un P1 llama a P2, P2 puede acceder a todos los objetos definidos localmente en P1. 35 En SQL Server puede haber hasta 32 niveles de anidamiento, y la guarda el nivel de anidamiento actual.
36 Creación [7 8] Creación Recomendaciones Modificación y borrado En SQL Server: Para ver información sobre los procedimientos: sp_help, sp_helptext y sp_depends Para obtener una lista de procedimientos: sp_stored_procedures 36
37 Creación [8 8] Creación Recomendaciones Modificación y borrado En MySQL: Para ver información sobre un procedimiento: SHOW CREATE PROCEDURE nombre; Para obtener una lista de procedimientos: SHOW PROCEDURE STATUS; 37
38 Recomendaciones [1 2] Creación Recomendaciones Modificación y borrado Cualificar los nombres de los objetos dentro del cuerpo del procedimiento. En SQL Server, tratar de evitar romper la cadena de permisos. Realizar un procedimiento por cada tarea (cohesión). Crear, probar y corregir los procedimientos en el servidor, luego hacer la prueba en los clientes. 38 Para evitar romper la cadena de permisos, se recomienda que el usuario dbo sea el dueño de los procedimientos (similar a las vistas).
39 Recomendaciones [2 2] Creación Recomendaciones Modificación y borrado En SQL Server, evitar el uso del prefijo sp_ para los procedimientos. Usar las mismas configuraciones de conexión para todos los procedimientos. Minimizar el uso de procedimientos temporales. 39 SQL Server guarda las configuraciones de las opciones SET QUOTED_IDENTIFIER (cuando está activa, los nombres de objetos se pueden delimitar por comillas dobles, por lo que se puede usar un nombre reservado del lenguaje, y cuando está inactiva éstos deben seguir las reglas de T-SQL) y SET ANSI_NULLS (especifica el comportamiento del operador = y <> cuando se compara contra NULL) cuando se crea o modifica un procedimiento. Estas configuraciones se utilizan cuando se ejecuta el procedimiento. Por lo tanto, las configuraciones de cada conexión para estas opciones se ignoran durante la ejecución del SP. Minimizar el uso de procedimientos temporales con el fin de evitar contienda en las tablas de sistema de la BD tempdb.
40 Creación Recomendaciones Modificación y borrado Modificación y borrado [1 6] En SQL Server, para modificar un procedimiento se puede usar la sentencia ALTER PROC[EDURE]. En MySQL, la sentencia ALTER PROCEDURE sólo permite modificar algunas características de un procedimiento, no su cuerpo ni parámetros. 40 En el caso de SQL Server, también se puede modificar un procedimiento desde SSMS, mientras que en MySQL desde alguna herramienta gráfica (Workbench por ejemplo). Como en MySQL no se puede modificar el cuerpo o parámetros de un procedimiento mediante la sentencia ALTER PROCEDURE, se deberá borrar y volver a crear el procedimiento. Para esto resulta de utilidad el comando SHOW CREATE PROCEDURE, el cual muestra la definición del mismo, junto con sus parámetros.
41 Creación Recomendaciones Modificación y borrado Modificación y borrado [2 6] Ejemplo SQL Server: ALTER PROC esquema1.overdue_books AS SELECT CONVERT(char(8),due_date,1) due_date, isbn, copy_no, SUBSTRING(title, 1, 30) title, member_no, lastname FROM esquema2.overdueview ORDER BY due_date GO 41 En el caso de SQL Server, también se puede modificar un procedimiento desde SSMS, mientras que en MySQL desde alguna herramienta gráfica (Workbench por ejemplo).
42 Creación Recomendaciones Modificación y borrado Modificación y borrado [3 6] Consideraciones (SQL Server): Incluir las opciones que correspondan para la modificación, como WITH ENCRYPTION, WITH RECOMPILE, etc. Sólo se modifica un procedimiento (al externo). Se necesita tener determinados permisos. 42 Si P1 llama a P2, y se modifica P1, el cambio es en P1 (P2 no se ve afectado). Cuando se modifica un procedimiento, se mantienen los permisos del mismo.
43 Creación Recomendaciones Modificación y borrado Modificación y borrado [4 6] A veces es necesario recompilar el plan de ejecución: Se agregan/borran/modifican índices Se cambian los datos en columnas indexadas Esta recompilación se produce automáticamente: Cuando SQL Server ejecuta la consulta por primera vez. Se cambian las tablas subyacentes. Esta opción no está disponible en MySQL. 43
44 Creación Recomendaciones Modificación y borrado Modificación y borrado [5 6] Formas de recompilar explícitamente un plan de ejecución: Especificar WITH RECOMPILE en la sentencia CREATE PROCEDURE. Especificar WITH RECOMPILE en la sentencia EXECUTE. Usar el procedimiento de sistema sp_recompile. 44 Al especificar WITH RECOMPILE en la sentencia CREATE PROCEDURE, el plan de ejecución no se guarda en el cache, y se recompila cada vez que se ejecuta. Al especificar WITH RECOMPILE en la sentencia EXECUTE, se crea un nuevo plan durante la ejecución del procedimiento y se guarda en el cache. El procedimiento almacenado de sistema sp_recompile recompila el procedimiento que se le especifica la próxima vez que se ejecute. Se le puede especificar una tabla o vista, con lo cual se recompilan los planes de ejecución de todos los procedimientos asociados.
45 Creación Recomendaciones Modificación y borrado Modificación y borrado [6 6] Borrado de un procedimiento (SQL Server): DROP PROC[EDURE] esquema1.overdue_books Borrado de un procedimiento (MySQL): DROP PROCEDURE verempleados; 45 En el caso de SQL Server, también se puede borrar un procedimiento desde SSMS, mientras que en MySQL desde alguna herramienta gráfica (Workbench por ejemplo). En SQL Server se puede emplear el procedimiento sp_depends para ver si otros objetos dependen del que se quiere borrar.
46 Parámetros de entrada Parámetros de salida Valores de retorno Manejo de errores Parámetros de entrada [1 11] Parámetros de entrada: Permiten pasar información a los procedimientos. Se los debe declarar en la sentencia CREATE PROCEDURE. 46
47 Parámetros de entrada Parámetros de salida Valores de retorno Manejo de errores Parámetros de entrada [2 11] Consideraciones: Verificar al principio del procedimiento los valores de entrada para detectar posibles valores inválidos. Proveer valores por defecto apropiados (SQL Server). El máximo número de parámetros depende del SGBDR. 47 En el caso de SQL Server 2008, un procedimiento soporta hasta 2100 parámetros de entrada. MySQL no soporta que se especifique un valor por defecto en la definición de un parámetro. Una alternativa consiste en verificar en el cuerpo del procedimiento si el parámetro es null, y en cuyo caso asignarle un valor por defecto. Para esto también se puede emplear la función IFNULL().
48 Parámetros de entrada Parámetros de salida Valores de retorno Manejo de errores Parámetros de entrada [3 11] Consideraciones: El máximo número de variables locales es limitado solamente por la memoria disponible (depende del SGBDR). Los parámetros procedimiento. tienen un ámbito local al 48
49 Parámetros de entrada Parámetros de salida Valores de retorno Manejo de errores Parámetros de entrada [4 11] SQL tipo_dato [ = valor_defecto] CREATE PROC char(8) = 'English' AS is null BEGIN PRINT "Please provide a title"... 49
50 Parámetros de entrada Parámetros de salida Valores de retorno Manejo de errores Parámetros de entrada [5 11] MySQL: parámetro tipo_dato DELIMITER // CREATE PROCEDURE verempleado(ide INTEGER) BEGIN SELECT * FROM Employees WHERE EmployeeID = ide; END // DELIMITER ; 50
51 Parámetros de entrada Parámetros de salida Valores de retorno Manejo de errores Parámetros de entrada [6 11] Llamada a un procedimiento con parámetros de entrada: SQL Server Por referencia Por posición MySQL Por posición 51 En el caso de SQL Server, no se puede mezclar ambas formas durante el llamado del procedimiento.
52 Parámetros de entrada Parámetros de salida Valores de retorno Manejo de errores Parámetros de entrada [7 11] Llamada por referencia: En la sentencia EXEC se especifica el parámetro de la = valor. El orden de los parámetros puede ser cualquiera. Se pueden omitir parámetros. Se puede = DEFAULT. 52 Si se omiten parámetros, se adoptan los valores por defecto o el valor nulo.
53 Parámetros de entrada Parámetros de salida Valores de retorno Manejo de errores Parámetros de entrada [8 11] Llamada por referencia: EXEC = = = 'Dogwood = = = '94203' 53 Si se omiten parámetros, se adoptan los valores por defecto o el valor nulo.
54 Parámetros de entrada Parámetros de salida Valores de retorno Manejo de errores Parámetros de entrada [9 11] Llamada por posición (SQL Server): Se pasan los valores en el mismo orden en que fueron definidos el procedimiento. Se pueden omitir parámetros en valores por defecto, pero no se debe interrumpir la secuencia. Se usan también valores nulos y DEFAULT como parámetros. 54
55 Parámetros de entrada Parámetros de salida Valores de retorno Manejo de errores Parámetros de entrada [10 11] Llamada por posición (SQL Server): EXEC addadult 'LaBrie', 'Linda', null, 'Dogwood Drive', 'Sacramento', 'CA', '94203', null 55
56 Parámetros de entrada Parámetros de salida Valores de retorno Manejo de errores Parámetros de entrada [11 11] Llamada por posición (MySQL): Se pasan los valores en el mismo orden en que fue definidos el procedimiento. Se usan también valores nulos como parámetros. CALL verempleado('sales Rep.', 'Ms.'); 56
57 Parámetros de salida [1 5] Parámetros de entrada Parámetros de salida Valores de retorno Manejo de errores Un procedimiento puede devolver información a quien lo llama en forma de parámetros de salida. SQL Server usa OUTPUT al definir el procedimiento: CREATE PROCEDURE smallint OUTPUT AS GO 57
58 Parámetros de salida [2 5] Parámetros de entrada Parámetros de salida Valores de retorno Manejo de errores En MySQL, los parámetros pueden ser de 3 tipos: IN (por defecto): quien llame al procedimiento debe proporcionar el parámetro. El procedimiento trabaja con una copia de este parámetro. OUT: el valor del parámetro se puede cambiar en el procedimiento. El procedimiento no puede acceder al valor inicial de este parámetro cuando empieza. INOUT: combinación de las 2 opciones anteriores. 58
59 Parámetros de salida [3 5] Parámetros de entrada Parámetros de salida Valores de retorno Manejo de errores Ejemplo en MySQL: DELIMITER // CREATE PROCEDURE cantempleados(toc VARCHAR(25), out cantidad integer) BEGIN SELECT count(employeeid) INTO cantidad FROM Employees WHERE TitleOfCourtesy = toc; END // DELIMITER ; 59
60 Parámetros de salida [4 5] Parámetros de entrada Parámetros de salida Valores de retorno Manejo de errores Llamada a un procedimiento con parámetros de salida: SQL Server Se emplea la cláusula OUTPUT. Quien llama al procedimiento debe tener una variable para guardar el valor de salida. smallint EXEC mathtutor 5, OUTPUT SELECT 'El resultado es: 60 Quien llama al procedimiento debe tener una variable para guardar el valor de salida, que puede ser de cualquier tipo de datos, salvo text o image. Si se omite OUTPUT al llamar al procedimiento, el mismo se ejecuta igual, pero no devuelve el valor que corresponda.
61 Parámetros de salida [5 5] Parámetros de entrada Parámetros de salida Valores de retorno Manejo de errores Llamada a un procedimiento con parámetros de salida: MySQL integer CALL cantempleados('sales', 61
62 Mensajes de error [1 11] Parámetros de entrada Parámetros de salida Mensajes de error Manejo de errores Mensajes de error: Permiten a los procedimientos comunicar el estado de la transacción al usuario. En SQL Server, para implementar los mensajes de error: Sentencia RETURN Procedimiento sp_addmessage Sentencia RAISERROR 62 En el ejemplo se puede ver que si no se pasa un nombre se devuelve -1 (para indicar una condición de falla), y en caso contrario un 0 (para indicar una condición de éxito).
63 Mensajes de error [2 11] Parámetros de entrada Parámetros de salida Mensajes de error Manejo de errores Mensajes de error con la sentencia RETURN: Permite devolver información de un procedimiento. Es más limitado que el uso de parámetros de salida ya que devuelve un único valor entero. Generalmente se la utiliza para devolver un valor de estado o código de error. 63 La sentencia RETURN sale de una consulta o procedimiento incondicionalmente.
64 Mensajes de error [3 11] Parámetros de entrada Parámetros de salida Mensajes de error Manejo de errores Ejemplo de RETURN: ALTER PROC smallint OUTPUT AS IF = '') RETURN = SCOPE_IDENTITY() RETURN 0 GO 64 En el ejemplo se puede ver que si no se pasa un nombre se devuelve -1 (para indicar una condición de falla), y en caso contrario un 0 (para indicar una condición de éxito). SQL Server devuelve un 0 automáticamente si no se especifica un valor de retorno.
65 Mensajes de error [4 11] Parámetros de entrada Parámetros de salida Mensajes de error Manejo de errores Ejemplo de RETURN: int = unprocedimiento OUTPUT IF (@result = 0) ELSE SELECT 'Error durante la inserción' 65 En el ejemplo se puede ver que si no se pasa un nombre se devuelve -1 (para indicar una condición de falla), y en caso contrario un 0 (para indicar una condición de éxito).
66 Mensajes de error [5 11] Parámetros de entrada Parámetros de salida Mensajes de error Manejo de errores Mensajes de error con el procedimiento sp_addmessage: Crea mensajes de error definidos por el usuario. Todos los mensajes de error (de usuario y sistema) se almacenan en la tabla sysmessages. Se pueden escribir en el Visor de Sucesos de Windows. 66 En el ejemplo se puede ver que si no se pasa un nombre se devuelve -1 (para indicar una condición de falla), y en caso contrario un 0 (para indicar una condición de éxito).
67 Mensajes de error [6 11] Parámetros de entrada Parámetros de salida Mensajes de error Manejo de errores Ejemplo de sp_addmessage: EXEC = = = El registro no puede ser = TRUE 67 En el ejemplo se puede ver que si no se pasa un nombre se devuelve -1 (para indicar una condición de falla), y en caso contrario un 0 (para indicar una condición de éxito).
68 Mensajes de error [7 11] Parámetros de entrada Parámetros de salida Mensajes de error Manejo de errores Mensajes de error con la función Contiene el número de error de la sentencia T-SQL más reciente. Se borra y resetea con cada sentencia que se ejecuta. Devuelve 0 cuando satisfactoriamente. la sentencia se ejecuta 68 En el ejemplo se puede ver que si no se pasa un nombre se devuelve -1 (para indicar una condición de falla), y en caso contrario un 0 (para indicar una condición de éxito).
69 Mensajes de error [8 11] Parámetros de entrada Parámetros de salida Mensajes de error Manejo de errores Ejemplo de <> 0 BEGIN ROLLBACK TRAN RETURN END COMMIT TRAN 69 En el ejemplo se puede ver que si no se pasa un nombre se devuelve -1 (para indicar una condición de falla), y en caso contrario un 0 (para indicar una condición de éxito).
70 Mensajes de error [9 11] Parámetros de entrada Parámetros de salida Mensajes de error Manejo de errores Mensajes de error con la sentencia RAISERROR: Genera un mensaje de error definido por el usuario y avisa al sistema que ha ocurrido un error. Puede escribir mensajes de error en el registro de errores de SQL o en el Visor de Sucesos de Windows. 70 En el ejemplo se puede ver que si no se pasa un nombre se devuelve -1 (para indicar una condición de falla), y en caso contrario un 0 (para indicar una condición de éxito).
71 Mensajes de error [10 11] Parámetros de entrada Parámetros de salida Mensajes de error Manejo de errores Ejemplo de RAISERROR: EXEC sp_addmessage 50010, 10, 'Mensaje1' EXEC sp_addmessage 50011, 10, 'Mensaje2' CREATE PROCEDURE int AS IS NULL BEGIN RAISERROR (50010, 10, 1) RETURN END 71 En el ejemplo se puede ver que si no se pasa un nombre se devuelve -1 (para indicar una condición de falla), y en caso contrario un 0 (para indicar una condición de éxito).
72 Mensajes de error [11 11] Parámetros de entrada Parámetros de salida Mensajes de error Manejo de errores En MySQL, para implementar los mensajes de error se cuenta con la sentencia LEAVE: DELIMITER // CREATE PROCEDURE borrarorden(ido integer) SALIR:BEGIN DECLARE mensaje VARCHAR(100); IF (ido IS NULL) THEN SELECT 'Mensaje1'; LEAVE SALIR; END IF; END // DELIMITER ; 72 En el ejemplo se puede ver que si no se pasa un nombre se devuelve -1 (para indicar una condición de falla), y en caso contrario un 0 (para indicar una condición de éxito).
73 Manejo de errores [1 4] Parámetros de entrada Parámetros de salida Mensajes de error Manejo de errores SQL Server permite gestionar el tratamiento de excepciones en cualquier situación transaccional, como ser un procedimiento almacenado. Bloque TRY/CATCH TRY: contiene las transacciones protegidas CATCH: gestiona los errores 73 Esta característica está disponible a partir de la versión 2005 de SQL Server. El bloque TRY contiene el código transaccional con probabilidades de fallar, mientras que el bloque CATCH contiene el código a ejecutar en caso de producirse un error en el bloque TRY. MySQL no soporta esta característica.
74 Manejo de errores [2 4] Parámetros de entrada Parámetros de salida Mensajes de error Manejo de errores Ejemplo: CREATE PROCEDURE int AS BEGIN TRY INSERT INTO TableWithKey END TRY BEGIN CATCH SELECT ERROR_NUMBER(), ERROR_MESSAGE() END CATCH 74 En este ejemplo el procedimiento intenta agregar 2 valores en una tabla, cuya primer columna es una clave primaria entera. El bloque TRY/CATCH protege a la sentencia INSERT y devuelve el número de error y mensaje en caso de producirse un problema mediante las funciones error_number() y error_message().
75 Parámetros de entrada Parámetros de salida Mensajes de error Manejo de errores Manejo de errores [3 4] Recomendaciones: Crear un bloque CATCH inmediatamente después de un bloque TRY Hacer un ROLL BACK de las transacciones con problemas dentro del bloque CATCH Contemplar el XACT_STATE uso de XACT_ABORT ON y 75 No se puede incluir ninguna sentencia entre las sentencias END TRY y BEGIN CATCH. El uso de transacciones permite agrupar múltiples sentencias para que todas se completen de manera exitosa, o ninguna. La opción XACT_ABORT especifica si SQL Server hace un roll back de la transacción actual automáticamente cuando una sentencia genera un error en tiempo de ejecución (ver pág. 344)
76 Manejo de errores [4 4] Parámetros de entrada Parámetros de salida Mensajes de error Manejo de errores Recomendaciones: Si es necesario, capturar la información del error ERROR_LINE ERROR_MESSAGE ERROR_NUMBER ERROR_PROCEDURE ERROR_SEVERITY ERROR_STATE 76 SQL Server cuenta con un conjunto de funciones para el manejo de errores, las cuales se pueden llamar en el bloque CATCH: ERROR_LINE: devuelve la línea donde se produjo el error. ERROR_MESSAGE: devuelve el mensaje de error. ERROR_NUMBER: devuelve un número que identifica el error. ERROR_PROCEDURE: devuelve el nombre del procedimiento o trigger donde se produjo el error. ERROR_SEVERITY: devuelve un valor indicando la gravedad del error. ERROR_STATE: algunos mensajes de error se pueden generar en distintos lugares. Cada condición que genera un mensaje asigna un estado único. Esta función devuelve el estado.
77 [1 5] Administración Anidamiento y recursividad Ejemplos Trigger: Tipo de procedimiento almacenado que se ejecuta automáticamente al modificarse los datos de la tabla sobre la que se lo creó. Cualquier sentencia SQL que se admita en un procedimiento se puede incluir dentro de un trigger. 77 Cuando ocurre una inserción, modificación o borrado de datos en una tabla, y se definió un trigger para la misma y para esa acción, se ejecuta automáticamente, no pudiéndose detener.
78 [2 5] Administración Anidamiento y recursividad Ejemplos Características: Se usan para mantener la integridad de datos. No devuelven valores. Su principal ventaja es que manejan complejidad de procesamiento. 78 Aunque un trigger puede devolver valores, no tiene sentido (las aplicaciones no lo esperan).
79 [3 5] Administración Anidamiento y recursividad Ejemplos Características: Son reactivos mientras que (constraints) son proactivas. las restricciones Se disparan después de la ejecución de sentencias INSERT, UPDATE o DELETE. Una tabla puede tener múltiples triggers del mismo tipo, sin orden de ejecución. 79 Los triggers son reactivos mientras que las restricciones son proactivas: quiere decir que las restricciones se verifican primero (se verifican antes de la sentencia y del trigger): si se violan las restricciones, el trigger nunca se dispara.
80 [4 5] Administración Anidamiento y recursividad Ejemplos Características: Los dueños de tablas deben tener permisos para crear, modificar y borrar triggers. No se puede crear triggers en vistas ni en tablas temporales, pero sí las pueden referenciar. No admiten parámetros. 80 Los triggers son reactivos mientras que las restricciones son proactivas: quiere decir que las restricciones se verifican primero (se verifican antes de la sentencia y del trigger): si se violan las restricciones, el trigger nunca se dispara.
81 [5 5] Administración Anidamiento y recursividad Ejemplos Usos: Cambios en cascada de tablas relacionadas. Forzado de integridad de datos de manera compleja. de mensajes de error de usuario Comparación de estados antes y después 81 Cambios en cascada de tablas relacionadas: un trigger para borrado en la tabla Compras puede borrar todas las filas de la tabla LineasCompras (esto se puede ejecutar más eficientemente empleando integridad referencial en cascada). Forzado de integridad de datos de manera compleja: los triggers pueden proteger contra inserciones, borrados y modificaciones incorrectas, e imponer restricciones más complejas que las definidas mediante constraints de tipo CHECK. de mensajes de error de usuario: los triggers pueden mostrar mensajes de error definidos por el usuario. Comparación de estados antes y después: los triggers pueden comparar el estado de una modificación de datos antes y después de dicha modificación y luego ejecutar determinadas acciones según esta diferencia.
82 Administración [1 25] Administración Anidamiento y recursividad Ejemplos Tipos de triggers en SQL Server: AFTER: Se ejecutan después que se produce la acción. Sólo se pueden definir en tablas. Se pueden definir varios en una misma tabla. INSTEAD OF: Se ejecutan en lugar de la acción usual del trigger. Se pueden definir también en vistas (1 por tabla o vista). 82 Los triggers del tipo INSTEAD OF están disponibles a partir de la versión 2005 de SQL Server. En versiones previas a la 2005, a los triggers AFTER se los conocía como triggers FOR.
83 Administración [2 25] Administración Anidamiento y recursividad Ejemplos Si una tabla tiene definidas restricciones, triggers AFTER e INSTEAD OF: Las restricciones se verifican después de la ejecución de los triggers INSTEAD OF, pero antes de la de los AFTER. Si se violan las restricciones, las acciones de los triggers INSTEAD OF se vuelven atrás y los triggers AFTER nunca se disparan. 83 Los triggers reactivos con respecto a las restricciones son los AFTER. Los triggers INSTEAD OF son proactivos.
84 Administración [3 25] Administración Anidamiento y recursividad Ejemplos En MySQL, al definir un trigger se puede especificar el momento en el que se disparará: AFTER: el trigger se dispara después de modificar la fila. BEFORE: el trigger se dispara antes de modificar la fila. 84 Los triggers del tipo INSTEAD OF están disponibles a partir de la versión 2005 de SQL Server.
85 Administración [4 25] Administración Anidamiento y recursividad Ejemplos Los triggers se crean con la sentencia CREATE TRIGGER: Nombre del trigger. La tabla a la cual pertenece el trigger. El o los eventos por los que se dispara el trigger. El cuerpo del procedimiento. 85 En el caso de SQL Server, también se lo puede hacer desde SSMS, mientras que en MySQL desde alguna herramienta gráfica (Workbench por ejemplo). Para crear un trigger, se debe especificar su nombre, la tabla a la cual pertenece, el o los eventos por los que se dispara y el cuerpo del procedimiento.
86 Administración [5 25] Administración Anidamiento y recursividad Ejemplos Consideraciones: Para crear un trigger se requiere determinados permisos. Claúsula IF UPDATE (SQL Server). Cadena de permisos (SQL Server). 86 En el caso de SQL Server, para crear un trigger se debe ser miembro de los roles db_owner o sysadmin. En SQL Server se puede emplear la cláusula IF UPDATE (columna) para focalizar la acción a una determinada columna, y no a todas las columnas de una tabla. Es recomendable que el dbo sea dueño de los objetos subyacentes para no romper la cadena de permisos.
87 Administración [6 25] Administración Anidamiento y recursividad Ejemplos Consideraciones: Pueden aceptar cualquier sentencia SQL, salvo: Todas las sentencias CREATE y DROP ALTER (TABLE, DATABASE, PROCEDURE, VIEW y TRIGGER) GRANT, REVOKE y DENY UPDATE STATISTICS RECONFIGURE LOAD DATABASE y RESTORE DATABASE 87 Es recomendable que el dbo sea dueño de los objetos subyacentes para no romper la cadena de permisos.
88 Administración [7 25] Administración Anidamiento y recursividad Ejemplos Trigger para inserción: Se dispara al agregar filas a la tabla en la que está creado. Cuando se dispara agrega filas a una tabla llamada inserted (SQL Server) o NEW (MySQL). La tabla inserted o NEW mantiene una copia de las filas que se agregaron. Se pueden referenciar las filas de la tabla inserted o NEW desde el trigger. 88 La tabla inserted o NEW es una tabla lógica, es decir, sólo se la puede referenciar desde el cuerpo del trigger cuando se ejecuta el mismo. Las filas de la tabla inserted o NEW siempre son un duplicado de una o más filas de la tabla del trigger. El trigger puede examinar la tabla inserted o NEW para determinar las acciones a ejecutar. La tabla NEW es insensible a mayúsculas.
89 Administración [8 25] Administración Anidamiento y recursividad Ejemplos Ejemplo de trigger para inserción: Se tiene la tabla Prestamos con un trigger para inserción: Prestamos Prestamos isbn isbn copy_no copy_no title_no title_no mem_no mem_no outdate outdate /13/91 02/13/91 02/14/91 02/14/91 02/14/91 02/14/91 duedate duedate 02/27/91 02/27/91 02/28/91 02/28/91 02/28/91 02/28/91 89
90 Administración [9 25] Administración Anidamiento y recursividad Ejemplos Ejemplo de trigger para inserción: Se hace una inserción en la tabla Prestamos: INSERT INTO Prestamos VALUES (603, 4, 11, 123, GETDATE(), (GETDATE() + 30)) loan loan isbn isbn copy_no copy_no title_no title_no mem_no mem_no outdate outdate duedate duedate /13/91 02/13/91 02/27/91 02/27/ /14/91 02/13/91 02/28/91 02/27/ /13/91 02/15/91 02/27/91 03/17/ /13/ /14/91 02/27/91 02/28/ /14/ /14/91 02/28/91 02/28/ /14/91 02/14/91 02/28/91 02/28/91 90
91 Administración [10 25] Administración Anidamiento y recursividad Ejemplos Ejemplo de trigger para inserción: Se dispara el trigger registrando la inserción en la tabla inserted o NEW: Prestamos loan loan Prestamos isbn isbn copy_no copy_no title_no title_no mem_no mem_no outdate outdate inserted inserted//new NEW duedate duedate /13/91 02/13/91 02/27/91 02/27/ /14/91 02/13/91 02/28/91 02/27/ /15/91 03/17/ /13/ /14/9102/27/91 02/13/91 02/28/91 02/27/ /14/91 02/28/ /14/91 02/28/ /14/91 02/14/91 02/28/91 02/28/ /15/91 02/15/91 03/17/91 03/17/91 91
92 Administración [11 25] Administración Anidamiento y recursividad Ejemplos Ejemplo de trigger para inserción: Se ejecuta el cuerpo del trigger: CREATE TRIGGER prestamos_insert ON Prestamos AFTER INSERT AS Copias UPDATE c Copias isbn isbn copy_no copy_no title_no title_no on_loan on_loan SET on_loan = 'Y' YY FROM Copias c INNER JOIN inserted I YY 1004 ON c.isbn = i.sbn AND N 1004 N c.copy_no = i.copy_no NN GO 92 En este ejemplo, se puede ver que cuando se inserta una fila en la tabla Prestamos, y en la misma hay definido un trigger para inserción, se actualiza la tabla Copias indicando que la copia del libro que se prestó está en ese estado (prestado). Para crear triggers del tipo AFTER se puede emplear esta cláusula, o la cláusula FOR (esta era la única que se podía especificar en versiones previas a la del 2005). Para crear triggers del tipo INSTEAD OF se reemplaza AFTER por estas palabras.
93 Administración [12 25] Administración Anidamiento y recursividad Ejemplos Trigger para inserción en MySQL: DELIMITER // CREATE TRIGGER Telefonos_Insert AFTER INSERT ON Telefonos FOR EACH ROW BEGIN -- cuerpo del trigger END// DELIMITER ; 93 Si se especifica la opción FOR EACH ROW, el trigger se ejecuta una vez para cada fila, y si no se especifica esta opción, el trigger se ejecuta una única vez sin importar el número de filas.
94 Administración [13 25] Administración Anidamiento y recursividad Ejemplos Trigger para borrado: Se dispara al borrar filas de la tabla en la que está creado. Cuando se dispara agrega filas a una tabla llamada deleted (SQL Server) u OLD (MySQL). La tabla deleted u OLD mantiene una copia de las filas que se borraron. Se pueden referenciar las filas de la tabla deleted u OLD desde el trigger. 94 La tabla deleted u OLD es una tabla lógica, es decir, sólo se la puede referenciar desde el cuerpo del trigger cuando se ejecuta el mismo. La tabla borrada y la tabla deleted u OLD no tienen filas en común. El trigger puede examinar la tabla deleted u OLD para determinar las acciones a ejecutar. En el caso de SQL Server, el trigger de borrado no se dispara con la sentencia TRUNCATE TABLE. En MySQL? La tabla OLD es insensible a mayúsculas.
95 Administración [14 25] Administración Anidamiento y recursividad Ejemplos Ejemplo de trigger para borrado: Se tiene la tabla Prestamos con un trigger para borrado: Prestamos Prestamos isbn isbn copy_no copy_no title_no title_no mem_no mem_no outdate outdate /13/91 02/13/91 02/14/91 02/14/91 02/14/91 02/14/91 duedate duedate 02/27/91 02/27/91 02/28/91 02/28/91 02/28/91 02/28/91 95
96 Administración [15 25] Administración Anidamiento y recursividad Ejemplos Ejemplo de trigger para borrado: Se borra una fila de la tabla Prestamos: DELETE Prestamos WHERE isbn = 4 AND copy_no = 1 Prestamos Prestamos isbn isbn copy_no copy_no title_no title_no mem_no mem_no outdate outdate /13/91 02/13/91 02/13/91 02/13/91 02/14/91 02/14/91 02/14/91 02/14/91 duedate duedate 02/27/91 02/27/91 02/27/91 02/27/91 02/28/91 02/28/91 02/28/91 02/28/91 96
97 Administración [16 25] Administración Anidamiento y recursividad Ejemplos Ejemplo de trigger para borrado: Se dispara el trigger registrando la inserción en la tabla deleted u OLD: Prestamos Prestamos isbn isbn copy_no copy_no title_no title_no mem_no mem_no outdate outdate deleted deleted//old OLD /13/91 02/13/91 02/14/91 02/14/91 02/14/91 02/14/ duedate duedate 02/27/91 02/27/91 02/28/91 02/28/91 02/28/91 02/28/91 02/13/91 02/13/91 02/27/91 02/27/91 97
98 Administración [17 25] Administración Anidamiento y recursividad Ejemplos Ejemplo de trigger para borrado: Se ejecuta el cuerpo del trigger: CREATE TRIGGER prestamos_delete ON Prestamos AFTER DELETE AS UPDATE c SET on_loan = 'N' FROM Copias c INNER JOIN deleted d ON c.isbn = d.isbn AND c.copy_no = d.copy.no GO Copias Copias isbn isbn copy_no copy_no title_no title_no on_loan on_loan YY YY N NN NN 98 En este ejemplo, se puede ver que cuando se borra una fila de la tabla Prestamos, y en la misma hay definido un trigger para borrado, se actualiza la tabla Copias indicando que la copia del libro que se prestó ya no está en estado de prestado, sino devuelto.
99 Administración [18 25] Administración Anidamiento y recursividad Ejemplos Trigger para modificación: Se dispara al modificar filas en la tabla en la que está creado. Cuando se dispara las filas originales se mueven a la tabla deleted u OLD, y las filas modificadas se insertan a la tabla inserted o NEW. Se pueden referenciar las filas de estas tablas desde el trigger. 99 En SQL Server se puede emplear la cláusula IF UPDATE (columna) para focalizar la acción a una determinada columna, y no a todas las columnas de una tabla.
100 Administración [19 25] Administración Anidamiento y recursividad Ejemplos Ejemplo de trigger para modificación: Se modifica una fila de la tabla Miembros, la cual tiene un trigger para modificación: UPDATE Miembros SET member_no = WHERE member_no = 1234 Miembros Miembros member_no member_no lastname lastname firstname firstname middleinitial middleinitial photograph photograph Anderson Anderson Barr Barr Barr Barr Anderson Anderson Andrew Andrew AA Andrew Andrew RR Bill NULL Bill NULL Bill BB Bill ~~~ ~~~ ~~~ ~~~ ~~~ ~~~ 100
101 Administración [20 25] Administración Anidamiento y recursividad Ejemplos Ejemplo de trigger para modificación: Se registra la modificación como 2 pasos: deleted deleted//old OLD 1234 Barr Andrew 1234 Barr Andrew RR ~~~ ~~~ inserted inserted//new NEW Barr Andrew Barr Andrew RR ~~~ ~~~ 101
102 Administración [21 25] Administración Anidamiento y recursividad Ejemplos Ejemplo de trigger para modificación: Se ejecuta el cuerpo del trigger: CREATE TRIGGER member_update ON Miembros AFTER UPDATE Miembros Miembros AS member_no member_no lastname lastname firstname firstname middleinitial middleinitial photograph photograph IF UPDATE (member_no) Anderson ~~~ Anderson Andrew Andrew AA ~~~ Andrew 1234 Barr R ~~~ BEGIN Barr Andrew R ~~~ Barr Bill NULL ~~~ Barr Bill NULL ~~~ RAISERROR ('Error', 10, 1) Anderson Bill BB Anderson Bill ROLLBACK TRANSACTION En este ejemplo, se puede ver que cuando se modifica una fila de la tabla Miembros, y en la misma hay definido un trigger para modificación, la operación se retrotrae si lo que se quiere modificar es la columna member_no. Un trigger, junto con la sentencia que lo dispara, son tratados como una sola transacción (no hace falta iniciar explícitamente la transacción). Esta transacción se puede volver atrás dentro del cuerpo del trigger (por esta razón, hay un ROLLBACK TRANSACTION sin un BEGIN TRANSACTION.
103 Administración [22 25] Administración Anidamiento y recursividad Ejemplos Modificación de un trigger (SQL Server): Sentencia ALTER TRIGGER ALTER TRIGGER prestamos_insert ON Prestamos AFTER INSERT AS UPDATE c SET on_loan = 'y' FROM Copias c INNER JOIN inserted i ON c.isbn = i.isbn AND c.copy_no = i.copy_no 103 Igual que en caso de los procedimientos almacenados, MySQL no soporta la modificación de triggers.
104 Administración [23 25] Administración Anidamiento y recursividad Ejemplos Borrado de un trigger: Sentencia DROP TRIGGER DROP TRIGGER prestamos_insert Cuando la tabla se borra, se borran todos sus triggers. El permiso para borrar un trigger lo tiene el dueño de la tabla únicamente. 104
105 Administración [24 25] Administración Anidamiento y recursividad Ejemplos Información sobre triggers: SQL Server: de una tabla: sp_depends tabla. del trigger: sp_helptext trigger. MySQL Información sobre triggers: SELECT * FROM information_schema.triggers 105
106 Administración [25 25] Administración Anidamiento y recursividad Ejemplos Consideraciones de rendimiento: Los triggers se ejecutan rápidamente porque las tablas inserted (o NEW) y deleted (u OLD) están en el cache. El tiempo de ejecución está determinado por: Número de tablas referenciadas. Número de filas afectadas. 106
107 Administración Anidamiento y recursividad Ejemplos Anidamiento y recursividad [1 7] Anidamiento: Un trigger puede contener sentencias INSERT, UPDATE y DELETE que afecten a otras tablas y, por ende, disparen otros triggers. En SQL Server, se puede habilitar o deshabilitar la opción de anidamiento (por defecto está habilitada). MySQL MySQL no soporta el anidamiento de triggers. 107
108 Administración Anidamiento y recursividad Ejemplos Anidamiento y recursividad [2 7] Consideraciones: Los disparos sucesivos de triggers pueden ocurrir hasta en 32 niveles (cuando un trigger supera este nivel, termina y deshace la transacción). Un trigger no se dispara 2 veces en un llamado (autollamada). Como el trigger es una sola transacción, cualquier error en cualquier nivel retrotrae toda la transacción. 108 En SQL Server se puede ver el nivel de anidamiento con la Que un trigger no se dispare 2 veces en un llamado significa que no se llama a sí mismo como respuesta a una segunda modificación en la misma tabla. Sin embargo, si un trigger T1 modifica una tabla, y esta modificación dispara un trigger T2, el cual modifica la tabla original, el trigger T1 se disparará recursivamente. Para evitar esto, se debe deshabilitar la opción de anidamiento.
109 Administración Anidamiento y recursividad Ejemplos Anidamiento y recursividad [3 7] Razones para desactivar el anidamiento: Requiere un diseño planeado y una complejidad apreciable. Las modificaciones de las tablas no siguen el orden esperado. Para desactivar el anidamiento: sp_configure 'nested triggers', Cuando se deshabilita la opción de anidamiento, si un trigger modifica una tabla, esta modificación no dispara el trigger asociado.
110 Administración Anidamiento y recursividad Ejemplos Anidamiento y recursividad [4 7] Recursividad: Un trigger puede tener sentencias UPDATE, INSERT o DELETE que afecten a la misma tabla u otra. La activación de recursividad hace que el trigger pueda activarse él mismo hasta una condición de parada. 110
111 Administración Anidamiento y recursividad Ejemplos Anidamiento y recursividad [5 7] Tipos de recursividad: Recursividad directa: una modificación en la tabla T1 dispara el trigger Trig1, que modifica la tabla T1 y se dispara nuevamente. Recursividad indirecta: una modificación en la tabla T1 dispara el trigger Trig1, que modifica la tabla T2, disparándose el trigger Trig2 de T2, que modifica la tabla T1, disparándose Trig1 nuevamente. 111 Los triggers recursivos son muy complejos y difíciles de implementar, pero brindan soluciones excelentes para relaciones autoreferenciadas.
112 Administración Anidamiento y recursividad Ejemplos Anidamiento y recursividad [6 7] Consideraciones: La recursividad admite 32 niveles, y por defecto está deshabilitada. Las tablas inserted y deleted contienen las filas que corresponden sólo a las sentencias del último trigger. Si la opción de anidamiento está deshabilitada, también lo está la opción de recursividad. 112
113 Administración Anidamiento y recursividad Ejemplos Anidamiento y recursividad [7 7] Consideraciones: Si la opción de anidamiento está habilitada, la recursividad indirecta se puede producir, aunque la opción de recursividad esté deshabilitada. Para activar la recursividad: sp_dboption nombre_db, 'recursive triggers', TRUE ALTER DATABASE <bd> SET RECURSIVE_TRIGGERS ON 113
114 Ejemplos [1 9] Administración Anidamiento y recursividad Ejemplos Forzado de la integridad de datos La tabla Reservas tiene las reservas que hacen los miembros de una biblioteca sobre los distintos libros. Cuando se presta un libro a un miembro, se registra el préstamo en la tabla Prestamos. Si el miembro tenía una reserva del libro, la misma debe borrarse de la tabla Reservas. 114
115 Ejemplos [2 9] Administración Anidamiento y recursividad Ejemplos Forzado de la integridad de datos Prestamos Prestamos Reservas Reservas isbn isbn copy_no copy_no mem_no mem_no isbn isbn mem_no mem_no log_date log_date remarks remarks Inserción Inserción Trigger Triggerborra borrafila fila /14/98 07/14/98 07/12/98 07/12/98 06/07/98 06/07/98 07/14/98 07/14/98 07/14/98 07/14/98 ~~~ ~~~ ~~~ ~~~ ~~~ ~~~ ~~~ ~~~ ~~~ ~~~ 115
116 Ejemplos [3 9] Administración Anidamiento y recursividad Ejemplos Forzado de la integridad de datos CREATE TRIGGER reservation_delete ON loan FOR INSERT AS IF (SELECT r.member_no FROM Reservas r JOIN inserted i ON r.member_no=i.member_no AND r.isbn=i.isbn) > 0 BEGIN DELETE r FROM Reservas r JOIN inserted i ON r.member_no = i.member_no AND r.isbn = i.isbn END 116
117 Ejemplos [4 9] Administración Anidamiento y recursividad Ejemplos Forzado de las Reglas de Negocio La tabla Miembros tiene los miembros de una biblioteca, los cuales pueden reservar libros. Cuando se presta un libro a un miembro, se registra el préstamo en la tabla Prestamos. Para poder borrar un miembro, el mismo no debe tener préstamos realizados. 117
118 Ejemplos [5 9] Administración Anidamiento y recursividad Ejemplos Forzado de las Reglas de Negocio Miembros member member Miembros member_no member_no Prestamos Prestamos lastname lastname firstname firstname isbn isbn Anderson Anderson Barr Barr Anderson Barr Anderson Barr Anderson Anderson Andrew Andrew Andrew Bill Bill Andrew Bill Bill Bill Bill copy_no copy_no title_no title_no mem_no mem_no
119 Ejemplos [6 9] Administración Anidamiento y recursividad Ejemplos Forzado de las Reglas de Negocio IF (SELECT COUNT(*) FROM Prestamos p JOIN deleted d ON p.member_no = d.member_no) > 0 ROLLBACK TRANSACTION 119
120 Ejemplos [7 9] Administración Anidamiento y recursividad Ejemplos Auditoría La tabla Productos tiene los productos que vende un negocio. Cada vez que se agrega un nuevo producto, se quiere saber, además del producto que se agregó, el usuario que lo hizo, desde qué máquina lo hizo y la fecha. 120
121 Ejemplos [8 9] Administración Anidamiento y recursividad Ejemplos Auditoría CREATE TABLE `AuditoriaProductos` ( `ID` INT NOT NULL AUTO_INCREMENT, `Tipo` CHAR(1) NOT NULL, -- tipo de operación `Fecha` DATETIME NOT NULL, `Host` VARCHAR(45) NOT NULL, `Usuario` VARCHAR(45) NOT NULL, `IDProducto` INT NOT NULL, `Nombre` VARCHAR(60) NOT NULL, `Descripcion` TEXT NOT NULL, PRIMARY KEY (`ID`) ); 121
122 Ejemplos [9 9] Administración Anidamiento y recursividad Ejemplos Auditoría DELIMITER // CREATE TRIGGER `Trig_Productos_Ins` AFTER INSERT ON `Productos` FOR EACH ROW BEGIN INSERT INTO AuditoriaProductos VALUES (DEFAULT, 'I', NOW(), SUBSTRING_INDEX(USER(), '@', -1), SUBSTRING_INDEX(USER(), '@', 1), NEW.IDProducto, NEW.Nombre, NEW.Descripcion); END // DELIMITER ; 122 En MySQL la función user() devuelve el usuario actual y la máquina como una cadena. Por ejemplo: 'juan@localhost'. La función substring_index() devuelve una subcadena de la cadena espeificada. En el primer caso, devuelve todo a la derecha del delimitador '@' ('localhost'), y en el segundo caso devuelve todo a la izquierda del delimitador '@' ('juan').
123 Creación Administración [1 3] DML Se disparan cuando se modifican filas en una tabla (inserción, borrado, modificación) Se disparan cuando se ejecutan sentencias DDL (CREATE, ALTER, DROP, etc) DML: Data Manipulation Language. DDL: Data Definition Language 123 A diferencia de los triggers DML, los cuales responden a cambios en los datos, los triggers DDL responden a acciones sobre los distintos objetos de la BD, por ejemplo, cuando se crea una tabla. Los triggers DDL están disponibles desde la versión 2005 de SQL Server. No son soportados por MySQL.
124 Creación Administración [2 3] Alcance de un trigger DDL Nivel BD: se disparan cuando se produce un evento en una determinada BD. Nivel Servidor: se disparan independientemente de la BD usada. 124 Ejemplo de triggers DDL con alcance a nivel BD: manipulación de tablas, vistas, índices, usuarios, procedimientos almacenados, etc. Ejemplo de triggers DDL con alcance a nivel servidor: manipulación de logins, certificados de seguridad, etc.
125 Creación Administración [3 3] Proceso de un trigger DDL Ejecución de una sentencia DDL Realización de la acción de la sentencia DDL Disparo del trigger DDL 125 Los triggers DDL se disparan cuando se completa la acción que lo dispara. Por ejemplo, un trigger que se dispare cuando se borre una tabla, se disparará después de borrar la tabla (no hay un equivalente a los triggers INSTEAD OF para las operaciones DDL). Se puede retrotraer la acción haciendo ROLLBACK TRANSACTION, con lo cual se vuelve atrás toda la operación, incluyendo la operación DDL que disparó el trigger. Una única operación DDL puede disparar múltiples triggers. El orden en el que se disparan no está documentado.
126 Creación Administración Creación [1 5] Los triggers DDL se crean con la sentencia CREATE TRIGGER, con algunas extensiones: Nombre del trigger. Alcance del trigger: ON DATABASE ON ALL SERVER Evento del trigger: eventdata() y query() 126 Cuando se crea un trigger DDL se debe especificar, además de su nombre, su alcance y evento que lo dispara. Para especificar un alcance a nivel BD se emplea ON DATABASE, y para el alcance a nivel servidor ON ALL SERVER. Los triggers DML crean las tablas inserted y deleted, no así los triggers DDL. Para éstos se puede usar la función eventdata() para obtener información sobre el evento que dispara el trigger. Luego, mediante el método query() se extrae información relacionada al evento.
127 Creación Administración Creación [2 5] Función eventdata(): Devuelve un documento XML cuyo contenido varía según el objetivo del trigger DDL. En todos estos documentos siempre está: <PostTime>: instante en el que se disparó el trigger <SPID>: ID del proceso que disparó el trigger <EventType>: tipo de evento que disparó el trigger 127
128 Creación Administración Creación [3 5] Ejemplo: trigger para el comando UPDATE STATISTICS <EVENT_INSTANCE> <PostTime> T02:14:20.640</PostTime> <SPID>58</SPID> <EventType>UPDATE_STATISTICS</EventType> <ServerName>SQL2005PC</ServerName> <LoginName>SQL2005PC\Administrator</LoginName> <UserName>SQL2005PC\Administrator</UserName> <DatabaseName>AdventureWorks</DatabaseName>... </EVENT_INSTANCE> 128
129 Creación Administración Creación [4 5] Método query(): Extrae información del evento a partir del documento generado por la función eventdata(). Ejemplo: para extraer el nombre de la BD: XML NVARCHAR(100) = eventdata() = 129
130 Creación Administración Creación [5 5] Ejemplo: CREATE TRIGGER UpdStats ON DATABASE FOR UPDATE_STATISTICS AS XML NVARCHAR(100) = eventdata() = GO 130
131 Creación Administración Administración [1 2] Información sobre triggers: de una tabla: sys.triggers. del trigger: sys.sql_modules. Modificación de un trigger: ALTER TRIGGER UpdStats ON DATABASE FOR UPDATE_STATISTICS AS Se puede obtener el listado de los triggers de una BD, incluyendo los triggers DDL, haciendo: SELECT * FROM sys.triggers. Para ver la definición de un trigger: SELECT * FROM sys.sql_modules. La sintaxis para modificar un trigger DDL es muy similar a la de un trigger DML. Se puede cambiar el evento que dispara el trigger, encriptar su definición, modificar el cuerpo, etc.
132 Creación Administración Administración [2 2] Borrado de un trigger: DROP TRIGGER UpdStats ON DATABASE 132 Al borrar o modificar un trigger se debe especificar ON DATABASE u ON ALL SERVER. Si no se lo hace, SQL Server asume que se trata de un trigger DML, generándose un error.
133 Resumen [1 2] de procedimiento almacenado Creación, modificación y borrado Recomendaciones con parámetros de entrada y salida Mensajes de error Manejo de errores de trigger Creación, modificación y borrado 133
134 Resumen [2 2] Anidamiento y recursividad Ejemplos de trigger DDL Creación, modificación y borrado 134
135 Otro material [1 1] Plan de ejecución Explain (MySQL) 135
Módulo VI: Procedimientos y Desencadenadores
Módulo VI: Procedimientos y Desencadenadores Procedimientos Almacenados Implementación de Desencadenadores Maximiliano Odstrcil - 1 Procedimientos Almacenados Introducción Creación, Ejecución y Modificación
Implementación de procedimientos almacenados
Implementación de procedimientos Introducción Introducción a los procedimientos Creación, ejecución, modificación y eliminación de procedimientos Utilización de parámetros en los procedimientos Ejecución
Existen dos tipos de disparadores que se clasifican según la cantidad de ejecuciones a realizar:
Trigger Un trigger(o desencadenador) es una clase especial de procedimiento almacenado que se ejecuta automáticamente cuando se produce un evento en el servidor de bases de datos. Los triggers o disparadores
SUBPROGRAMAS PL/SQL César Martínez C. Profesor Instructor de Base de Datos Sede Puente Alto DUOC
SUBPROGRAMAS PL/SQL César Martínez C. Profesor Instructor de Base de Datos Sede Puente Alto DUOC INTRODUCCIÓN Los subprogramas son otro tipo de bloques PL/SQL Se diferencian de los bloques anónimos porque
Conceptos de Bases de Datos Relacionales Triggers
Conceptos de Bases de Datos Relacionales Triggers Trigger Un trigger es un procedimiento almacenado asociado con una tabla, el cual se ejecuta automáticamente cuando se modifica un dato de esa tabla Stored
Unidad III. Bases de Datos
Clase:11 1 Unidad III Bases de Datos 2 SQL. Comandos de DDL. Comandos de DML. Agenda 3 SQL Structured Query Language SQL Los comandos del SQL pueden dividirse en tres grupos: Comandos de definición de
Implementación de Procedimientos Almacenados
Implementación de Procedimientos Almacenados Objetivo del tema Proporcionar una introduc-ción a los temas y objetivos del módulo. Introducción Un procedimiento almacenado es una colección con nombre de
PROCEDIMIENTOS ALMACENADOS
PROCEDIMIENTOS ALMACENADOS Un procedimiento almacenado es un conjunto de sentencias SQL y de control de flujo Procedimientos almacenados definidos por el usuario Son procedimientos definidos por el usuario
DISPARADORES EN SQL DISPARADORES EN SQL:1999 SINTAXIS GENERAL DE UN DISPARADOR EN SQL:1999 SINTAXIS GENERAL DE UN DISPARADOR EN SQL:1999
DISPARADORES EN SQL:1999 DISPARADORES EN SQL Modelos Avanzados de Bases de Datos Un (trigger) es un procedimiento especial que se ejecuta en respuesta a un evento específico. Ej. Al aumentar el sueldo
TRIGGER LEONEL CADOSO ROMERO 1
TRIGGER Qué es un trigger o disparador o desencadenador para SQL server? Es una clase especial de procedimiento almacenado que se ejecuta automáticamente cuando se produce un evento en el servidor de bases
MANUALITO MS-SQL SERVER
MANUALITO MS-SQL SERVER Contenido 1. Crear Store Procedures en MS SQL Server... 1 2. Crear Triggers en MS SQL Server... 5 3. Crear Vistas en MS SQL Server... 9 1. Crear Store Procedures en MS SQL Server
6. PROGRAMACIÓN CON TRANSACT-SQL
6. PROGRAMACIÓN CON TRANSACT-SQL 6.1. Introducción. " # 6.2. Declaración y asignación de variables. $ " % & ' # ( % ) # (( ) *$+,$ " $ # &-' $ $. $" / # 0 1$,$2 DECLARE @limite money SET @limite = 10 SELECT
1. Lenguaje de Definición de Datos. 2. Lenguaje de Manipulación de. Datos. M. C. Gustavo Alfonso Gutiérrez Carreón
1. Lenguaje de Definición de Datos 2. Lenguaje de Manipulación de Datos M. C. Gustavo Alfonso Gutiérrez Carreón Los 'sistemas de gestión de bases de datos (en inglés database management system, abreviado
Implementación de Procedimientos Almacenados
Implementación de Procedimientos Almacenados Contenido Introducción 1 Introducción a los procedimientos almacenados 2 Creación, ejecución, modificación y eliminación de procedimientos almacenados 10 Utilización
Capítulo 1: Modelo conceptual
Capítulo 1: Modelo conceptual A. Recordatorios sobre el almacenaje de datos....... 7 1. Las distintas categorías de datos............... 7 a. Los datos básicos.................... 8 b. Los datos de movimiento.................
Objetivos y Temario CURSO MySQL 5
Objetivos y Temario CURSO MySQL 5 OBJETIVOS Este curso MySQL 5 se dirige a desarrolladores técnicos e ingenieros ya familiarizados con un lenguaje de programación y que desean desarrollar sus aplicaciones
Modificación de datos
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 Uso de transacciones Iniciar transacciones
ÍNDICE. Introducción... Capítulo 1. Características, instalación, inicio y entorno de trabajo... 1
ÍNDICE Introducción... XI Capítulo 1. Características, instalación, inicio y entorno de trabajo... 1 Características y novedades de Access 2010... 1 Comienzo rápido del trabajo y seguimiento de la información...
m047a Curso Programando una Base de Datos SQL Server 2008, 36 h
Creación De Índices (L32) UNA TABLA PUEDE CONTENER VARIOS ÍNDICES SQL SERVER CREA AUTOMATICÁMENTE ÍNDICES ÚNICOS PARA ASEGURAR LOS CONSTRAINTS DE PRIMARY KEY Y UNIQUE EL ÍNDICE POR DEFECTO PARA LA CLAVE
Repaso. Laboratorio Informix. Stored Procedures. Ejemplo. Creación de stored procedures. Sql en un Procedimiento
Laboratorio Informix Stored Procedures Triggers Repaso A partir del ER, hicimos las tablas de la base de datos. Creamos en MySql las base de datos y las tablas Hicimos una aplicación que se comunica con
Laboratorio Informix. Stored Procedures Triggers
Laboratorio Informix Stored Procedures Triggers Repaso A partir del ER, hicimos las tablas de la base de datos. Creamos en MySql las base de datos y las tablas Hicimos una aplicación que se comunica con
Concepto de vista. (con ciertas limitaciones). nivel físico) Una vista es una tabla virtual (no tiene una correspondencia a
2.6.1.- Concepto de vista. Una vista es una tabla derivada de otras tablas (básicas o virtuales). Una vista se caracteriza porque: Se considera que forma parte del esquema externo. Una vista es una tabla
//Sección de manejo de excepciones. Las rutinas de manejo de errores //aparecen aqui
PL/SQL - Oracle PL/SQL (Procedural Language/SQL) es una extensión de SQL, que agrega ciertas construcciones propias de lenguajes procedimentales, obteniendose como resultado un lenguaje estructural mas
Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos. Triggers
Triggers Grupo de Ingeniería del Software y Bases de Datos Universidad de Sevilla octubre 2011 Introducción Objetivos de la práctica Conocer qué son los y para qué se utilizan Aprender a construir Consultar
ÍNDICE INTRODUCCIÓN...17
ÍNDICE INTRODUCCIÓN...17 CAPÍTULO 1. ORACLE 11g Y EL GRID COMPUTING...19 1.1 CONCEPTO DE GRID COMPUTING...19 1.2 ORACLE GRID COMPUTING...20 1.2.1 Almacenamiento eficiente de la información...21 1.2.2 Utilización
Índice. iii. Objetivos... 24
Índice Objetivos... 2 1: Modelación de base de datos... 2 2: Ejemplo de un caso de negocios... 3 2.1: Requerimientos de la aplicación... 4 2.2: Características de flujo de información... 4 2.3: Diagrama
Bases de Datos Relacionales
Bases de Datos Relacionales PROCEDIMIENTOS ALMACENADOS Preparó: Ismael Castañeda Fuentes Fuentes: Manuales Sybase Manuales SQL Server Manuales Oracle Procedimientos almacenados Un procedimiento almacenado
SQL SERVER SQL Server 2005 permite tres tipos de operaciones con conjuntos: UNION, disponible en todas las versiones de SQL Server.
SQL SERVER 2005 Operaciones con Conjuntos SQL Server 2005 permite tres tipos de operaciones con conjuntos: UNION, disponible en todas las versiones de SQL Server. EXCEPT, nuevo en SQL Server 2005. INTERSECT,
8 ACCESS CURSO PRÁCTICO RA-MA
ÍNDICE INTRODUCCIÓN...15 CAPÍTULO 1. CARACTERÍSTICAS, NOVEDADES Y ENTORNO DE TRABAJO...17 1.1 NOVEDADES EN ACCESS 2010...17 1.1.1 Novedades generales y de interfaz...17 1.1.2 Novedades en herramientas
8 SQL SERVER 2008 RA-MA
ÍNDICE Capítulo 1. Características, novedades y entorno de trabajo... 17 1.1 Novedades en SQL Server 2008... 17 1.2 Instalación de Microsoft SQL Server 2008... 19 1.3 Versiones de Microsoft SQL Server
Transacciones, copias de seguridad. Xochitl Clemente Parra Armando Méndez Morales
Transacciones, copias de seguridad Xochitl Clemente Parra Armando Méndez Morales Transacciones Las transacciones hablan de atomicidad. Atomicidad es el concepto que habla de un conjunto de cosas actuando
UNIVERSIDAD NACIONAL DE SAN AGUSTÍN FACULTAD DE PRODUCCIÓN Y SERVICIOS ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS LABORATORIO DE BASES DE DATOS 1
UNIVERSIDAD NACIONAL DE SAN AGUSTÍN FACULTAD DE PRODUCCIÓN Y SERVICIOS ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEM LABORATORIO DE BES DE DATOS 1 Prof. Marco Aedo Práctica de Laboratorio Nº 6 I. OBJETIVOS
PROCEDIMIENTOS ALMACENADOS. CREATE PROCEDURE nombreprocedimiento [@parametro1 tipodato [=valordefecto]][,...]
PROCEDIMIENTOS ALMACENADOS CREATE PROCEDURE nombreprocedimiento [@parametro1 tipodato [=valordefecto]][,...] SENTENCI.. forma de llamarlo [exec] nombreprocedimiento [valorparametro1][,valor paremtro2...]
GUÍA DE TRABAJO GRADO 11. Media Fortalecida - SENA Programación de Software Ing. Néstor Raúl Suarez Perpiñan Página 1 de 6
Página 1 de 6 Tema: VISTAS Y DESENCADENADORES (TRIGGER) EN SQL SERVER Objetivo: Adquirir los conocimientos necesarios para desarrollar e implementar vistas y desencadenadores utilizando SQL Server I. VISTAS
Introducción a Transact-SQL
Introducción a Transact-SQL Introducción E lenguaje de programación Transact-SQL Tipos de instrucciones de Transact-SQL Elementos de la sintaxis de Transact-SQL El lenguaje de programación Transact-SQL
Cursores, Triggers, Indices, Transacciones, Vistas Gestión y Modelación de Datos
Cursores, Triggers, Indices, Transacciones, Vistas Gestión y Modelación de Datos Cursores CREATE OR REPLACE FUNCTION incsalario (INTEGER) RETURNS TEXT AS ' DECLARE curemp CURSOR FOR SELECT nombres, apellidos,
Sistemas de Datos Curso: Ernesto Chinkes. Subconsultas Stored Procedures - Triggers
Subconsultas Stored Procedures - Triggers Subconsultas Concepto Ubicación En el SELECT En el FROM En el WHERE Operadores IN ANY-ALL EXISTS Concepto Son sentencias SELECT que aparecen dentro de otra consulta
MySQL 5 (versiones 5.1 a 5.6) Guía de referencia del desarrollador
Prefacio 1. Objetivos de este libro 13 2. Principales temas tratados en este libro 13 3. A quién va dirigido este libro? 14 4. Requisitos 14 Introducción a MySQL 1. Introducción a las bases de datos relacionales
ÍNDICE. Capítulo 1. Características, novedades y entorno de trabajo...13
ÍNDICE Capítulo 1. Características, novedades y entorno de trabajo...13 1.1 Características de Access 2007...13 1.2 Novedades en Access 2007...15 1.2.1 Novedades generales y de interfaz...15 1.2.2 Novedades
Diseño e Implementación de Bases de Datos
Universidad Tecnológica Equinoccial Facultad de Ciencias de la Ingeniería Departamento de Informática Diseño e Implementación de Bases de Datos Segundo Semestre 2011-2012 Prof. Diego Ordóñez Camacho, Ph.D.
Uso de Disparadores. Miguel Angel Garduño Cordova Isaac Méndez Hernández
Reporte Uso de Disparadores Catedrático: Alumnos: Ing. María Elena Reyes Castellanos Miguel Angel Garduño Cordova Isaac Méndez Hernández Índice General Índice de tablas 2 Introducción 4 Objetivo 4 Desarrollo
8 MICROSOFT SQL SERVER 2008 R2. CURSO PRÁCTICO RA-MA
ÍNDICE CAPÍTULO 1. CARACTERÍSTICAS, NOVEDADES Y ENTORNO DE TRABAJO...17 1.1 NOVEDADES EN SQL SERVER 2008 R2...17 1.2 INSTALACIÓN DE MICROSOFT SQL SERVER 2008 R2...18 1.3 VERSIONES DE MICROSOFT SQL SERVER
Pre-Taller Gestión de Privilegios de Usuarios 2. Manipulación de Vistas 3. Creación y manipulación de Triggers (Introducción al uso de PL/pgsql)
BASES DE DATOS Facyt-UC Pre-Taller 2 1. Gestión de Privilegios de Usuarios 2. Manipulación de Vistas 3. Creación y manipulación de Triggers (Introducción al uso de PL/pgsql) 1. Gestión de Privilegios de
Base de Datos Oracle 10g: Programación con PL/SQL Código: D Duración: 5 días (40 horas)
Base de Datos Oracle 10g: Programación con PL/SQL Código: D17214 - Duración: 5 días (40 horas) Lo que aprenderá Esta clase es aplicable para los usuarios de Oracle8i, Oracle9i y Oracle Database 10g. Este
Cadena de caracteres Numéricas Fecha y hora Booleanas Tipo registro Tipo cursor
Cadena de caracteres Numéricas Fecha y hora Booleanas Tipo registro Tipo cursor Declaración de variables Inicialización de variables Declaración de constantes Asignación de valores a variables Tipo Nombre_var
8283: Administración y programación en Microsoft SQL Server 2012
8283: Administración y programación en Microsoft SQL Server 2012 Este curso es orientado a los profesionales en desarrollo que desean maximizar la participación de SQL Server 2012 en beneficio del desempeño
ÍNDICE. Introducción... XVII. Capítulo 1. Oracle 10g y el Grid Computing... 1
ÍNDICE Introducción... XVII Capítulo 1. Oracle 10g y el Grid Computing... 1 Necesidad del Grid Computing... 1 Concepto de Grid Computing... 4 Oracle Grid Computing... 5 Almacenamiento eficiente de información...
Checks, Triggers y Excepciones en InterBase: validando desde la base de datos
Checks, Triggers y Excepciones en InterBase: validando desde la base de datos Por Alfonso Ricaño Bringas InterBase nos permite validar los valores que ingresan a los campos, mediante las restricciones
Tema: Procedimientos almacenados y cursores. Facultad : Ingeniería Escuela : Computación Asignatura: SQL SERVER. GUÍA 2 Pág. 1
Tema: Procedimientos almacenados y cursores. Facultad : Ingeniería Escuela : Computación Asignatura: SQL SERVER GUÍA 2 Pág. 1 I. OBJETIVOS Utilizar procedimientos almacenados Conocer el uso de los cursores
SQL Server 2000. FEMEPA SQL Server 2000
FEMEPA Partes del SQL El lenguaje SQL está compuesto de varios sub-lenguajes, entre los cuales destacan los tres siguientes: DML. Lenguaje de definición de datos. Todas las sentencias de manipulación de
LENGUAJE DE CONSULTA ESTRUCTURADO (SQL)
Qué es una base de datos? Una base de datos (cuya abreviatura es BD) es una entidad en la cual se pueden almacenar datos de manera estructurada, con la menor redundancia posible. Diferentes programas y
Tema 5. Lenguaje de Definición de Datos
Tema 5 Lenguaje de Definición de Datos Índice Tema 5 1. Creación de tablas. Restricciones 2. Consultas de creación de tablas. 3. Modificación de la estructura de una tabla. 4. Borrado de tablas. 5. Creación
ÍNDICE PRIMERA PARTE... 17
ÍNDICE PREFACIO... xv PRIMERA PARTE... 17 CAPÍTULO 1. BASES DE DATOS... 19 BASE DE DATOS RELACIONAL... 20 ESTRUCTURA MÍNIMA DE ALMACENAMIENTO... 21 EJEMPLO DE TABLA... 22 RESUMEN... 23 CAPÍTULO 2. CONSULTAS
2.6.2.- Aplicaciones de las vistas. 2.6.1.- Concepto de vista. 2.6.3.- Vistas en SQL. 2.6.3.- Vistas en SQL.
2.6.1.- Concepto de vista. Una vista es una tabla derivada de otras tablas (básicas o virtuales). Una vista se caracteriza porque: Se considera que forma parte del esquema externo. Una vista es una tabla
Bases de Datos / Elementos de Bases de Datos 2011. Que es un Stored Procedure? Stored Procedures: Ventajas
Bases de Datos / Elementos de Bases de Datos 2011 Stored Procedures, Triggers y Transacciones en MySQL Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur 1 Que es un Stored
PROCEDIMIENTOS ALMACENADOS Y TRIGGERS. Bases de Datos Ingeniería de Sistemas y Computación Universidad Nacional de Colombia 2007
PROCEDIMIENTOS ALMACENADOS Y TRIGGERS Bases de Datos Ingeniería de Sistemas y Computación Universidad Nacional de Colombia 2007 Procedimientos almacenados Un procedimiento almacenado es un conjunto de
Procedimientos almacenados con parametros de salida
Procedimientos almacenados con parametros de salida CREATE PROC[EDURE] [ {@parámetro tipodatos} [= predeterminado] [OUTPUT] ] [,...n] [WITH { RECOMPILE ENCRYPTION } ] AS Sentencias
UNIVERSIDAD DEL ISTMO CAMPUS IXTEPEC LIC. INFORMATICA GRUPO 508 PROCEDIMIENTOS ALMACENADOS EN SQL SERVER 2000
PROCEDIMIENTOS ALMACENADOS EN SQL SERVER 2000 Creación de la base de Datos Pulsamos F5 para Actualizar, y una vez posicionados en nuestra base de datos,se crean los scripts que seran soportados por el
El Lenguaje SQL TEMA V. Grupo de Bas ses de Datos Avanzadas Univ. Carlo os III de Madrid. V.1 SQL como Lenguaje de Definición de Datos
Grupo de Bases de Datos Avanzadas Univ. Carlos III de Madrid Índice V.1 Introducción V.1 SQL como Lenguaje de V.1.1 Definición del esquema V.1.2 Evolución del esquema V.2 SQL como Lenguaje de Manipulación
Vistas en MS SQL Server. Bases de Datos I Universidad Católica II Cuatrimestre
Vistas en MS SQL Server Bases de Datos I Universidad Católica II Cuatrimestre - 2012 Definición «Vistas» Una vista se puede considerar una tabla virtual o una consulta almacenada. El conjunto de resultados
A.1. Definiciones de datos en SQL
A.1. Definiciones de datos en SQL Las Sentencias del lenguaje de definición de datos (DDL) que posee SQL operan en base a tablas. Las Principales sentencias DDL son las siguientes: CREATE TABLE DROP TABLE
Modulo I: Introducción Gestores de Bases De Datos
Modulo I: Introducción Gestores de Bases De Datos El SQL El SQL (Lenguaje de Consulta Estructurado Structure Query Language), es un lenguaje de consulta estructurado establecido claramente como el lenguaje
Tema 33. El lenguaje SQL
Tema 33. El lenguaje SQL Introducción... 1 Modos de uso... 2 Ejecución de las sentencias SQL... 2 Instrucciones DDL Data Definition Language-... 3 Instrucciones DML Data Manipulation Language-... 4 Instrucciones
GALA CONCEPTO COMMIT, ROOLBACK SAVEPOINTS (SAVE TRANSACTION) No Consultas. Definiciones Transacciones ( L33 )
Definiciones Transacciones ( L33 ) CONCEPTO COMMIT, ROOLBACK SAVEPOINTS (SAVE TRANSACTION) Transacciones En Microsoft ( L33 ) MANUAL (REQUIERE PROGRAMACION) AUTOMATICO (COM+ O DTM) DTM (DISTRIBUTED TRANSACTION
ÍNDICE INTRODUCCIÓN...13
ÍNDICE INTRODUCCIÓN...13 CAPÍTULO 1. EL MODELO RELACIONAL. LENGUAJE SQL...17 1.1 INTRODUCCIÓN AL MODELO RELACIONAL...17 1.2 RELACIONES...19 1.2.1 Definición formal de relación...21 1.2.2 Propiedades y
Administración Base de Datos SQL
Administración Base de Datos SQL Profesor René Sandoval Ingeniero (E) Informática [email protected] Introducción Además de DML, DDL y los tipos de datos, Transact-SQL (desde ahora T-SQL) tiene algunos
GUIA 3 PARTE II. Introducción a PL/SQL
GUIA 3 PARTE II Introducción a PL/SQL PL/SQL proviene de Procedural Language (lenguaje procedural)/ Structured Query Language (Lenguaje de consulta estructurado). PL/SQL ofrece un conjunto de comandos
En este curso se presenta un análisis profundo de la base de datos MySQL para los sistemas operativos Windows y Linux.
DURACION: 300 horas PRECIO: 225 * * Materiales didácticos, titulación y gastos de envio incluidos MODALIDAD: A distancia DESCRIPCION: La metodología comienza con la exposición de las tareas en orden secuencial
UNIVERSIDAD DON BOSCO
UNIVERSIDAD DON BOSCO Facultad: Ingeniería Escuela: Computación CATEDRA BASE DE DATOS I DOCENTE ING. LUIS ANAYA REPORTE INVESTIGACION COMPLEMENTARIA GUIA 10 INTEGRANTES HERNÁNDEZ DOÑO NORBERTO ANTONIO
SQL (Structured Query Language)
SQL (Structured Query Language) El lenguaje de consulta estructurado o SQL (por sus siglas en inglés Structured Query Language) es un lenguaje declarativo de acceso a bases de datos relacionales que permite
Introducción al SQL de InterBase: DDL y DML
Artículos técnicos Grupo Danysoft: Introducción al SQL de InterBase: DDL y DML Segunda Parte Tercer Artículo Por Pablo Reyes Equipo Grupo Danysoft julio de 2002 - (902) 123146 www.danysoft.com Introducción
Triggers 27/11/2014. Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos. Triggers en Oracle
Triggers en Oracle Grupo de Ingeniería del Software y Bases de Datos Universidad de Sevilla noviembre 2012 Introducción Objetivos de la práctica Conocer qué son los y para qué se utilizan Aprender a construir
FIREBIRD: SQL PROCEDIMENTAL (PSQL)
FIREBIRD: SQL PROCEDIMENTAL (PSQL) Vicente Tejero Trueba Pag 1 IES Pedro Espinosa FIREBIRD: SQL PROCEDIMENTAL (PSQL) 1.- INTRODUCCION...1 2.- EXTENSIONES DEL LENGUAJE...2 2.1.- Terminadores...2 2.2.- Variables...3
ORACLE 10g. Descripción A QUIEN VA DIRIGIDO?
ORACLE 10g Descripción A QUIEN VA DIRIGIDO? Está dirigido a estudiantes y profesionista que desee conocer la tecnología Oracle, así como realizar extracción de datos, creación de objetos y administración
Diseño e Implementación SQL Server
Diseño e Implementación SQL Server Programa de Estudio Diseño e Implementación SQL Server Desarrolla e Implanta importantes Modelos de Bases de Datos basados en casos reales de Empresas. Aprende a diseñar
Programación SQL. Lucio Salgado Diciembre 2008
Programación SQL Lucio Salgado Diciembre 2008 1 Gestionadores de Bases de Datos (DBMS) Es el software que permite administrar bases de datos, a través de ella el usuario puede usar los datos con mucha
Procedimientos almacenados
Procedimientos almacenados Vimos que SQL Server ofrece dos alternativ para egurar la integridad de datos, la integridad: 1) DECLARATIVA, mediante el uso de restricciones (constraints), valores predeterminados
Consultas con combinaciones
UNIDAD 1.- PARTE 2 MANIPULACIÓN AVANZADA DE DATOS CON SQL. BASES DE DATOS PARA APLICACIONES Xochitl Clemente Parra Armando Méndez Morales Consultas con combinaciones Usando combinaciones (joins), se pueden
Oracle PL/SQL. Programa de Estudio.
Oracle PL/SQL Programa de Estudio Oracle PL/SQL El alumno egresara del mismo con los conocimientos y destrezas necesarias para desempeñarse como desarrollador Oracle PL/SQL además de contar con los conocimientos
Curso Querying Microsoft SQL Server 2014 (20461)
Curso Querying Microsoft SQL Server 2014 (20461) Programa de Estudio Curso Querying Microsoft SQL Server 2014 (20461) Aprende las habilidades técnicas necesarias para escribir consultas Transact-SQL básicas
GESTORES GESTORES DE BASES DE DATOS
GESTORES GESTORES DE BASES DE DATOS Existen varios tipos de Sistemas gestores de bases de datos SGBD, según el modelo de datos que utilizan. Son estos: bases jerárquica, en red, relacional, y bases de
GBD Diseño físico de DDBB
GBD Diseño físico de DDBB Mª Carmen Gabarrón Manual SQL de Oracle 10g http://download.oracle.com/docs/cd/b19306_01/server.102/b14200/index.htm SQL SQL es el lenguaje de consulta universal para bases de
1. DML. Las consultas de resumen
1.1 Introducción 1. DML. Las consultas de resumen Una de las funcionalidades de la sentencia SELECT es el permitir obtener resúmenes de los datos contenidos en las columnas de las tablas. Para poder llevarlo
Bases de Datos / Elementos de Bases de Datos 2015
Bases de Datos / Elementos de Bases de Datos 2015 Stored Procedures, Triggers y Transacciones en MySQL Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur 1 Stored Procedures
Implementación de funciones definidas por el usuario
Implementación de funciones definidas por el usuario Contenido Introducción 1 Qué es una función definida por el usuario? 2 Definición de funciones definidas por el usuario 3 Ejemplos de funciones definidas
Funciones Definición de función
Funciones Definición de función Una función es un bloque de código que realiza una tarea específica. Una función es una porción de programa, identificable mediante un nombre, que realiza determinadas tareas
LENGUAJE DE CONSULTA ESTRUCTURADO - SQL CONTENIDO
LENGUAJE DE CONSULTA ESTRUCTURADO - SQL 1. TIPOS DE DATOS 2. COMANDOS DDL 2.1 Créate 2.2 Drop 2.3 Alter 3. COMANDOS DML 3.1 Select 3.2 Insert 3.3 Update 3.4 Delete 4. CLAUSULAS 4.1 From 4.2 Where 4.3 Having
Maestría en Bioinformática. Bases de Datos y Sistemas de Información SQL: DML. Ing. Alfonso Vicente, PMP
Maestría en Bioinformática Bases de Datos y Sistemas de Información SQL: DML Ing. Alfonso Vicente, PMP [email protected] Agenda DML Sentencias Modificando la instancia Agenda DML Sentencias
SERVICIO NACIONAL DE APRENDIZAJE SENA SISTEMA INTEGRADO DE GESTIÓN Procedimiento Ejecución de la Formación Profesional Integral GUÍA DE APRENDIZAJE
SERVICIO NACIONAL DE APRENDIZAJE SENA SISTEMA INTEGRADO DE GESTIÓN Procedimiento Ejecución de la Formación Profesional Integral GUÍA DE APRENDIZAJE Versión: 02 Código: GFPI-F- 019 GUÍA DE APRENDIZAJE Nº
Integridad Referencial. Restricciones (constraints)
Integridad Referencial Restricciones (constraints) Integridad de Referencial Integridad referencial: asegura la integridad entre las llaves foráneas y primarias (relaciones padre/hijo). Existen cuatro
INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO IBEROTEC SEMESTRE ACADÉMICO: 2014-II SÍLABO
INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO IBEROTEC SEMESTRE ACADÉMICO: 201-II SÍLABO 1. DATOS GENERALES UNIDAD DIDÁCTICA : DESARROLLO DE APLICACIONES CON BASE DE DATOS MÓDULO : DESARROLLO DE SOFTWARE
SQL PROCEDURAL Triggers y Stored Procedures. Ing. Gustavo A. Correa Reina UNCPBA 2008
Base de Datos I SQL PROCEDURAL Triggers y Stored Procedures Ing. Gustavo A. Correa Reina UNCPBA 2008 SQL Procedural Posibilita el uso de código procedural conjuntamente con sentencias SQL que son almacenadas
Configuración de MySQL con NetBeans
Configuración de MySQL con NetBeans Web Application Development 7CM5 26/03/2012 Desarrollo. I. Configurar las propiedades del Servidor MySQL. 1. Se asume que se encuentra instalado MySQL, que en este caso
Bases de Datos SQL 1 SQL. Jorge Pérez R. Universidad de Talca, II Semestre 2006
Bases de Datos SQL 1 SQL Jorge Pérez R. Universidad de Talca, II Semestre 2006 Bases de Datos SQL 2 SQL + Procedural La mayoría de los DBMS actuales permiten extensiones de SQL para la creación de bloques
LENGUAJE ESTRUCTURADO DE CONSULTAS SQL (2)
LENGUAJE ESTRUCTURADO DE CONSULTAS SQL (2) N O T A S D E L A M A T E R I A B A S E S D E D A T O S I L I C E N C I A T U R A E N C I E N C I A S D E L A C O M P U T A C I Ó N U N I V E R S I D A D D E
Diseño de bases de datos
Departamento de Lenguajes y Sistemas Informáticos E.T.S. Ingeniería Informática. Universidad de Sevilla Avda Reina Mercedes sn. 41012 Sevilla TlfFax 954 557 139 E-mail [email protected] Web www.lsi.us.es Diseño
