UNIVERSIDAD NACIONAL DE TRUJILLO
FACULTAD DE INGENIERÍA
E.A.P. Ingeniería de Sistemas
Sede Valle Jequetepeque
TRIGGER
Inte...
INDICE
TRIGGERS .............................................................................................................
Universidad Nacional de Trujillo TRIGGERS
Escuela de Ingeniería de Sistemas
3
TRIGGERS
1. DEFINICIÓN
Un trigger (o dispara...
Universidad Nacional de Trujillo TRIGGERS
Escuela de Ingeniería de Sistemas
4
Los desencadenadores DDL se ejecutan como re...
Universidad Nacional de Trujillo TRIGGERS
Escuela de Ingeniería de Sistemas
5
2. ARGUMENTOS
a. SCHEMA_NAME
Es el nombre de...
Universidad Nacional de Trujillo TRIGGERS
Escuela de Ingeniería de Sistemas
6
permisos sobre cualquier objeto de base de d...
Universidad Nacional de Trujillo TRIGGERS
Escuela de Ingeniería de Sistemas
7
k. SQL_STATEMENT
Son las condiciones y accio...
Universidad Nacional de Trujillo TRIGGERS
Escuela de Ingeniería de Sistemas
8
3. Ejemplos de Triggers:
a. Usar desencadena...
Universidad Nacional de Trujillo TRIGGERS
Escuela de Ingeniería de Sistemas
9
c. Usar un desencadenador DML AFTER para exi...
Universidad Nacional de Trujillo TRIGGERS
Escuela de Ingeniería de Sistemas
10
VendorID,ShipMethodID,OrderDate,ShipDate,Su...
Universidad Nacional de Trujillo TRIGGERS
Escuela de Ingeniería de Sistemas
11
DROPTRIGGERddl_trig_database
ONALL SERVER;
...
Universidad Nacional de Trujillo TRIGGERS
Escuela de Ingeniería de Sistemas
12
 Fuerzan restricciones dinámicas de integr...
Universidad Nacional de Trujillo TRIGGERS
Escuela de Ingeniería de Sistemas
13
Llamada de activación: es la sentencia que ...
Universidad Nacional de Trujillo TRIGGERS
Escuela de Ingeniería de Sistemas
14
Son apropiados para mantener la integridad ...
Universidad Nacional de Trujillo TRIGGERS
Escuela de Ingeniería de Sistemas
15
B. DROP TRIGGER (Transact-SQL)
Quita uno o ...
Universidad Nacional de Trujillo TRIGGERS
Escuela de Ingeniería de Sistemas
16
USE AdventureWorks2012;
GO
DISABLE TRIGGERP...
Universidad Nacional de Trujillo TRIGGERS
Escuela de Ingeniería de Sistemas
17
desencadenador no se quita. Sigue siendo un...
Universidad Nacional de Trujillo TRIGGERS
Escuela de Ingeniería de Sistemas
18
BIBLIOGRAFIA:
 HEURTEL, O. (2009).PHP y My...
Upcoming SlideShare
Loading in...5
×

TRIGGERS Cliente - servidor

468

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
468
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

TRIGGERS Cliente - servidor

  1. 1. UNIVERSIDAD NACIONAL DE TRUJILLO FACULTAD DE INGENIERÍA E.A.P. Ingeniería de Sistemas Sede Valle Jequetepeque TRIGGER Integrantes: MACHUCA CRUZADO, ARMANDO VASQUEZ HUAMAN, OSCAR VARGAS LEON, LUIS ZÚÑIGA CERDÁN, JORGE LUIS. Asesor Metodológico: ING. JOSE FERNANDEZ MURRUGARRA. GUADALUPE, PERÚ 2013
  2. 2. INDICE TRIGGERS ......................................................................................................................................... 3 1. DEFINICIÓN.............................................................................................................................. 3 a. Sintaxis........................................................................................................................................ 4 Limitaciones de los desencadenadores.................................................................................. 7 Ejemplos de Triggers: ............................................................................................................. 8 l. Tipo de Eventos......................................................................................................................... 11 3. VENTAJAS Y DESVENTAJAS.............................................................................................. 11 A. Ventajas:.................................................................................................................................... 11 B. Desventajas: .............................................................................................................................. 12 4. USO........................................................................................................................................... 12 5. COMPONENTES PRINCIPALES:.......................................................................................... 12 6. TIPOS........................................................................................................................................ 13 7. EFECTOS Y CARACTERÍSTICAS ........................................................................................ 13 8. ADMINISTRACIÓN DE LOS TRIGGERS............................................................................. 14  OPERACIONES CON TRIGGERS .............................................................................................. 14 A. ALTER TRIGGER.......................................................................................................................... 14 B. DROP TRIGGER (Transact-SQL).................................................................................................. 15 C. ENABLE TRIGGER (Transact-SQL) .............................................................................................. 15 D. DISABLE TRIGGER (Transact-SQL).............................................................................................. 16
  3. 3. Universidad Nacional de Trujillo TRIGGERS Escuela de Ingeniería de Sistemas 3 TRIGGERS 1. DEFINICIÓN Un trigger (o disparador) en una Base de datos, es un procedimiento que se ejecuta cuando se cumple una condición establecida al realizar una operación. Dependiendo de la base de datos, los triggers pueden ser de inserción (INSERT), actualización (UPDATE) o borrado (DELETE). Algunas bases de datos pueden ejecutar triggers al crear, borrar o editar usuarios, tablas, bases de datos u otros objetos. Son usados para mejorar la administración de la Base de datos, sin necesidad de contar con que el usuario ejecute la sentencia de SQL. Además, pueden generar valores de columnas, previene errores de datos, sincroniza tablas, modifica valores de una vista, etc. Permite implementar programas basados en paradigma lógico (sistemas expertos, deducción). La diferencia con los procedimientos almacenados del sistema es que los triggers: - no pueden ser invocados directamente; al intentar modificar los datos de una tabla para la que se ha definido un disparador, el disparador se ejecuta automáticamente. - no reciben y retornan parámetros. - son apropiados para mantener la integridad de los datos, no para obtener resultados de consultas. Los desencadenadores DML se ejecutan cuando un usuario intenta modificar datos mediante un evento de lenguaje de manipulación de datos (DML). Los eventos DML son instrucciones INSERT, UPDATE o DELETE de una tabla o vista. Estos desencadenadores se activan cuando se desencadena cualquier evento válido, con independencia de que las filas de la tabla se vean o no afectadas.
  4. 4. Universidad Nacional de Trujillo TRIGGERS Escuela de Ingeniería de Sistemas 4 Los desencadenadores DDL se ejecutan como respuesta a diversos eventos del lenguaje de definición de datos (DDL). Estos eventos corresponden principalmente a instrucciones CREATE, ALTER y DROP de Transact-SQL, y a determinados procedimientos almacenados del sistema que ejecutan operaciones de tipo DDL. a. Sintaxis Trigger DML CREATETRIGGER[schema_name.]trigger_name ON{table|view} [WITH<dml_trigger_option>[,...n ]] {FOR|AFTER| INSTEAD OF} {[INSERT][,][UPDATE][,][DELETE]} [NOTFOR REPLICATION ] AS{sql_statement[;][,...n ]|EXTERNAL NAME <method specifier[;]>} <dml_trigger_option>::= [ ENCRYPTION] [EXECUTEAS Clause ] <method_specifier>::= assembly_name.class_name.method_name -- Trigger DDL CREATETRIGGERtrigger_name ON{ALL SERVER | DATABASE } [WITH<ddl_trigger_option>[,...n ]] {FOR|AFTER}{event_type|event_group}[,...n ] AS{sql_statement[;][,...n ]|EXTERNAL NAME < method specifier>[;]} <ddl_trigger_option>::= [ ENCRYPTION] [EXECUTEAS Clause ]
  5. 5. Universidad Nacional de Trujillo TRIGGERS Escuela de Ingeniería de Sistemas 5 2. ARGUMENTOS a. SCHEMA_NAME Es el nombre del esquema al que pertenece un desencadenador DML. Los desencadenadores DML tienen como ámbito el esquema de la tabla o la vista donde se crean. schema_name no se puede especificar para los desencadenadores DDL o LOGON. b. TRIGGER_NAME Es el nombre del desencadenador. El parámetro trigger_name debe cumplir con las reglas de los identificadores, con la excepción de que trigger_name no puede comenzar con los símbolos # o ##. c. TABLE | VIEW Es la tabla o vista en que se ejecuta el desencadenador DML; algunas veces se denomina tabla del desencadenador o vista del desencadenador. Especificar el nombre completo de la tabla o vista es opcional. Solo se puede hacer referencia a una vista mediante un desencadenador INSTEAD OF. No es posible definir desencadenadores DML en tablas temporales locales o globales. d. DATABASE Aplica el ámbito de un desencadenador DDL a la base de datos actual. Si se especifica, el desencadenador se activa cada vez que event_type o event_group tienen lugar en la base de datos actual. e. ALL SERVER Aplica el ámbito de un desencadenador DDL o logon al servidor actual. Si se especifica, el desencadenador se activa cada vez que event_type o event_group tienen lugar en la base de datos actual. f. WITH ENCRYPTION Ofusca el texto de la instrucción CREATE TRIGGER. El uso de WITH ENCRYPTION impide que el desencadenador se publique como parte de la replicación de SQL Server. WITH ENCRYPTION no se puede especificar para desencadenadores CLR. g. EXECUTE AS Especifica el contexto de seguridad en el que se ejecuta el desencadenador. Permite controlar qué cuenta de usuario utiliza la instancia de SQL Server para validar los
  6. 6. Universidad Nacional de Trujillo TRIGGERS Escuela de Ingeniería de Sistemas 6 permisos sobre cualquier objeto de base de datos al que haga referencia el desencadenador. Para obtener más información, vea EXECUTE AS (cláusula de Transact-SQL). h. FOR | AFTER AFTER específica que el desencadenador DML solo se activa cuando todas las operaciones especificadas en la instrucción SQL desencadenadora se han ejecutado correctamente. Además, todas las acciones referenciales en cascada y las comprobaciones de restricciones deben ser correctas para que este desencadenador se ejecute. AFTER es el valor predeterminado cuando solo se especifica la palabra clave FOR. Los desencadenadores AFTER no se pueden definir en las vistas. i. INSTEAD OF Especifica que se ejecuta el desencadenador DML en vez de la instrucción SQL desencadenadora, por lo que se suplantan las acciones de las instrucciones desencadenadoras. INSTEAD OF no se puede especificar para los desencadenadores DDL o logon. Como máximo, se puede definir un desencadenador INSTEAD OF por cada instrucción INSERT, UPDATE o DELETE en cada tabla o vista. No obstante, en las vistas es posible definir otras vistas que tengan su propio desencadenador INSTEAD OF. Los desencadenadores INSTEAD OF no se permiten en vistas actualizables que usan WITH CHECK OPTION. SQL Server genera un error cuando se agrega un desencadenador INSTEAD OF a una vista actualizable para la que se especificó WITH CHECK OPTION. El usuario debe quitar esta opción mediante ALTER VIEW antes de definir el desencadenador INSTEAD OF. j. { [ DELETE ] [ , ] [ INSERT ] [ , ] [ UPDATE ] } Especifica las instrucciones de modificación de datos que activan el desencadenador DML cuando se intenta en esta tabla o vista. Se debe especificar al menos una opción. En la definición del desencadenador se permite cualquier combinación de estas opciones, en cualquier orden. Para los desencadenadores INSTEAD OF, no se permite la opción DELETE en tablas que tengan una relación de integridad referencial que especifica una acción ON DELETE en cascada. Igualmente, no se permite la opción UPDATE en tablas que tengan una relación de integridad referencial que especifica una acción ON UPDATE en cascada.
  7. 7. Universidad Nacional de Trujillo TRIGGERS Escuela de Ingeniería de Sistemas 7 k. SQL_STATEMENT Son las condiciones y acciones del desencadenador. Las condiciones del desencadenador especifican los criterios adicionales que determinan si los intentos de los eventos DML, DDL o logon hacen que se lleven a cabo las acciones del desencadenador. Las acciones del desencadenador especificadas en las instrucciones Transact-SQL surten efecto cuando se intenta la operación. Limitaciones de los desencadenadores CREATE TRIGGER debe ser la primera instrucción en el proceso por lotes y solo se puede aplicar a una tabla. Un desencadenador se crea solamente en la base de datos actual; sin embargo, un desencadenador puede hacer referencia a objetos que están fuera de la base de datos actual. Si se especifica el nombre del esquema del desencadenador (para calificar el desencadenador), califique el nombre de la tabla de la misma forma. La misma acción del desencadenador puede definirse para más de una acción del usuario (por ejemplo, INSERT y UPDATE) en la misma instrucción CREATE TRIGGER. Los desencadenadores INSTEAD OF DELETE/UPDATE no pueden definirse en una tabla con una clave externa definida en cascada en la acción DELETE/UPDATE. En un desencadenador se puede especificar cualquier instrucción SET. La opción SET seleccionada permanece en efecto durante la ejecución del desencadenador y, después, vuelve a su configuración anterior.
  8. 8. Universidad Nacional de Trujillo TRIGGERS Escuela de Ingeniería de Sistemas 8 3. Ejemplos de Triggers: a. Usar desencadenador DML con un mensaje de aviso El siguiente desencadenador DML imprime un mensaje en el cliente cuando alguien intenta agregar o cambiar datos en la tabla Customer. USE AdventureWorks2012; GO IFOBJECT_ID('Sales.reminder1','TR')ISNOTNULL DROPTRIGGER Sales.reminder1; GO CREATETRIGGER reminder1 ONSales.Customer AFTERINSERT,UPDATE AS RAISERROR ('Notify Customer Relations',16,10); GO b. Usar un desencadenador DML con un mensaje de correo electrónico de aviso Este ejemplo envía un mensaje de correo electrónico a una persona especificada (MaryM) cuando cambia la tabla Customer. USE AdventureWorks2012; GO IFOBJECT_ID('Sales.reminder2','TR')ISNOTNULL DROPTRIGGER Sales.reminder2; GO CREATETRIGGER reminder2 ONSales.Customer AFTERINSERT,UPDATE,DELETE AS EXECmsdb.dbo.sp_send_dbmail @profile_name='AdventureWorks2012 Administrator', @recipients ='danw@Adventure-Works.com', @body='Don''t forget to print a report for the sales force.', @subject='Reminder'; GO
  9. 9. Universidad Nacional de Trujillo TRIGGERS Escuela de Ingeniería de Sistemas 9 c. Usar un desencadenador DML AFTER para exigir una regla de negocios entre las tablas PurchaseOrderHeader y Vendor El desencadenador comprueba que la solvencia del proveedor es satisfactoria cuando se intenta insertar un nuevo pedido de compra en la tabla PurchaseOrderHeader. Para obtener la solvencia del proveedor, debe hacerse referencia a la tabla Vendor. Si la solvencia no es satisfactoria, se muestra un mensaje y no se ejecuta la inserción. USE AdventureWorks2012; GO IFOBJECT_ID('Purchasing.LowCredit','TR')ISNOTNULL DROPTRIGGERPurchasing.LowCredit; GO --Este disparador previene una fila que se inserte en la tabla Purchasing.PurchaseOrderHeader --Cuando la calificación credito del proveedor especificado se establece en 5 (debajo de la media). CREATETRIGGERPurchasing.LowCreditONPurchasing.PurchaseOrderHeader AFTERINSERT AS IFEXISTS(SELECT* FROMPurchasing.PurchaseOrderHeader p JOIN inserted ASi ONp.PurchaseOrderID=i.PurchaseOrderID JOINPurchasing.VendorAS v ONv.BusinessEntityID=p.VendorID WHEREv.CreditRating=5 ) BEGIN RAISERROR ('La calificación crediticia de un vendedor es demasiado bajo como para aceptar nuevas órdenes de compra.',16,1); ROLLBACKTRANSACTION; RETURN END; GO --Esta declaración intenta insertar una fila en la tabla PurchaseOrderHeader. --Un proveedor que tiene una calificación crediticia inferior a la media. --El disparador AFTER INSERT se dispara y la operación INSERT se revertirá. INSERTINTOPurchasing.PurchaseOrderHeader(RevisionNumber, Status,EmployeeID,
  10. 10. Universidad Nacional de Trujillo TRIGGERS Escuela de Ingeniería de Sistemas 10 VendorID,ShipMethodID,OrderDate,ShipDate,SubTotal,TaxAmt, Freight) VALUES( 2 ,3 ,261 ,1652 ,4 ,GETDATE() ,GETDATE() ,44594.55 ,3567.564 ,1114.8638); GO d. Usar un desencadenador DDL con ámbito de base de datos En el ejemplo siguiente se usa un desencadenador DDL para impedir que se quiten sinónimos de una base de datos. USE AdventureWorks2012; GO IFEXISTS(SELECT*FROMsys.triggers WHEREparent_class=0AND name ='seguridad') DROPTRIGGER safety ON DATABASE; GO CREATETRIGGER safety ON DATABASE FOR DROP_SYNONYM AS RAISERROR ('Debe desactivar Trigger de "seguridad" para dejar sinónimos!',10,1) ROLLBACK GO DROPTRIGGER safety ON DATABASE; GO e. Usar un desencadenador DDL con ámbito de servidor En el ejemplo siguiente se utiliza un desencadenador DDL para imprimir un mensaje si se produce un evento CREATE DATABASE en la instancia actual del servidor, y se utiliza la función EVENTDATA para recuperar el texto de la instrucción Transact-SQL correspondiente. IFEXISTS(SELECT*FROMsys.server_triggers WHERE name ='ddl_trig_database')
  11. 11. Universidad Nacional de Trujillo TRIGGERS Escuela de Ingeniería de Sistemas 11 DROPTRIGGERddl_trig_database ONALL SERVER; GO CREATETRIGGERddl_trig_database ONALL SERVER FOR CREATE_DATABASE AS PRINT 'Database Created.' SELECTEVENTDATA().value('(/EVENT_INSTANCE/TSQLCommand/ CommandText)[1]','nvarchar(max)') GO DROPTRIGGERddl_trig_database ONALL SERVER; GO 4. Tipo de Eventos Insert: Se produce cuando se intenta guardar el objeto por primera vez. Update: Se produce cuando se intenta modificar algún dato del objeto. Delete: Se produce cuando se intenta eliminar el objeto. Los Trigger permiten implementar reglas de gestión del lado del servidor. Los principales usos de los triggers son los siguientes: Calcular automáticamente el valor de una columna: por ejemplo, un trigger puede utilizarse para calcular automáticamente un precio. Hacer un seguimiento de las actualizaciones en la base de datos: por ejemplo, cada vez que se elimina un artículo, un trigger registra la eliminación (quien, cuanto, que) en una tabla de auditoria. 5. VENTAJAS Y DESVENTAJAS A. Ventajas:  Ofrece un mayor control sobre la Base de Datos.
  12. 12. Universidad Nacional de Trujillo TRIGGERS Escuela de Ingeniería de Sistemas 12  Fuerzan restricciones dinámicas de integridad de datos y de integridad referencial.  Respuesta instantánea ante eventos auditados.  Aseguran que las operaciones relacionadas de realizan juntas de forma implícita. B. Desventajas:  Un Trigger nunca se llama directamente.  Los Triggers no se desarrollan pensando en unsolo registro, los mismos deben funcionar enconjunto con los datos ya que se disparan por operación y no por registro.  Por funcionalidad, no hay que poner en uno sololas funciones de INSERT,UPDATE y DELETE.  Utilizar moderadamente los Triggers.  No se pueden utilizar en tablas temporales. 6. USO Son usados para mejorar la administración de la Base de datos, sin necesidad de contar con que el usuario ejecute la sentencia de SQL. Además, pueden generar valores de columnas, previene errores de datos, sincroniza tablas, modifica valores de una vista, etc. Permite implementar programas basados en paradigma lógico (sistemas expertos, deducción). 7. COMPONENTES PRINCIPALES: La estructura básica de untrigger es:
  13. 13. Universidad Nacional de Trujillo TRIGGERS Escuela de Ingeniería de Sistemas 13 Llamada de activación: es la sentencia que permite "disparar" el código a ejecutar. Restricción: es la condición necesaria para realizar el código. Esta restricción puede ser de tipo condicional o de tipo nulidad. Acción a ejecutar: es la secuencia de instrucciones a ejecutar una vez que se han cumplido las condiciones iniciales. 8. TIPOS Existen dos tipos de disparadores que se clasifican según la cantidad de ejecuciones a realizar: RowTriggers (o Disparadores de fila): son aquellas que se ejecutaran n-veces si se llama n-veces desde la tabla asociada al trigger StatementTriggers (o Disparadores de secuencia): son aquellos que sin importar la cantidad de veces que se cumpla con la condición, su ejecución es única. 9. EFECTOS Y CARACTERÍSTICAS No aceptan parámetros o argumentos (pero podrían almacenar los datos afectados en tablas temporales) No pueden ejecutar las operaciones COMMIT o ROLLBACK por que estas son parte de la sentencia SQL del disparador (únicamente a través de transacciones autónomas) Pueden causar errores de mutaciones en las tablas, si se han escrito de manera deficiente. No pueden ser invocados directamente; al intentar modificar los datos de una tabla para la que se ha definido un disparador, el disparador se ejecuta automáticamente. No reciben y retornan parámetros.
  14. 14. Universidad Nacional de Trujillo TRIGGERS Escuela de Ingeniería de Sistemas 14 Son apropiados para mantener la integridad de los datos, no para obtener resultados de consultas. 10. ADMINISTRACIÓN DE LOS TRIGGERS  OPERACIONES CON TRIGGERS A. ALTER TRIGGER Modifica la definición de un desencadenador logon, DDL o DML creado anteriormente por una instrucción CREATE TRIGGER. Ejemplo: En el ejemplo siguiente se crea un desencadenador DML que imprime para el cliente un mensaje definido por el usuario cuando un usuario intenta agregar o cambiar los datos de la tabla SalesPersonQuotaHistory. Después, el desencadenador se modifica utilizando ALTER TRIGGER para aplicar el desencadenador solo en las actividades INSERT. Este desencadenador es útil porque recuerda al usuario que actualiza o inserta filas en esta tabla que notifique también al departamento Compensation. USE AdventureWorks2012; GO IFOBJECT_ID(N'Sales.bonus_reminder', N'TR')ISNOTNULL DROPTRIGGERSales.bonus_reminder; GO CREATETRIGGERSales.bonus_reminder ONSales.SalesPersonQuotaHistory WITH ENCRYPTION AFTERINSERT,UPDATE AS RAISERROR ('Notify Compensation',16,10); GO -- Now, change the trigger. USE AdventureWorks2012; GO ALTERTRIGGERSales.bonus_reminder ONSales.SalesPersonQuotaHistory AFTERINSERT AS RAISERROR ('Notify Compensation',16,10); GO
  15. 15. Universidad Nacional de Trujillo TRIGGERS Escuela de Ingeniería de Sistemas 15 B. DROP TRIGGER (Transact-SQL) Quita uno o varios desencadenadores DML o DDL de la base de datos actual. Puede eliminar un desencadenador DML si quita éste o quita la tabla del desencadenador. Cuando se quita una tabla, también se quitan todos los desencadenadores asociados. Ejemplos: a. Quitar un desencadenador DML:En el siguiente ejemplo se quita el desencadenador employee_insupd. USE AdventureWorks2012; GO IFOBJECT_ID('employee_insupd','TR')ISNOTNULL DROPTRIGGERemployee_insupd; GO b. Quitar un desencadenador DDL: En el siguiente ejemplo se quita el desencadenador DDL safety. USE AdventureWorks2012; GO IFEXISTS(SELECT*FROMsys.triggers WHEREparent_class=0AND name ='safety') DROPTRIGGER safety ON DATABASE; GO C. ENABLE TRIGGER (Transact-SQL) Habilita un desencadenador DML, DDL o logon.Si se habilita un desencadenador, éste no se vuelve a crear. Un desencadenador deshabilitado sigue existiendo como objeto en la base de datos actual, pero no se activa. La habilitación de un desencadenador hace que se active cuando se ejecute cualquier instrucción Transact-SQL en que se programó originalmente Ejemplos: a. Habilitar un desencadenador DML en una tabla:En el siguiente ejemplo se deshabilita el desencadenador uAddress que se creó en la tabla Address y, a continuación, se habilita.
  16. 16. Universidad Nacional de Trujillo TRIGGERS Escuela de Ingeniería de Sistemas 16 USE AdventureWorks2012; GO DISABLE TRIGGERPerson.uAddressONPerson.Address; GO ENABLE TriggerPerson.uAddressONPerson.Address; GO b. Habilitar un desencadenador DDL:En el siguiente ejemplo se crea un desencadenador DDL safety con ámbito de la base de datos y, a continuación, se deshabilita. IFEXISTS(SELECT*FROMsys.triggers WHEREparent_class=0AND name ='safety') DROPTRIGGER safety ON DATABASE; GO CREATETRIGGER safety ON DATABASE FOR DROP_TABLE, ALTER_TABLE AS PRINT 'Debe desactivar Trigger "de seguridad" para eliminar o modificar las tablas!' ROLLBACK; GO DISABLE TRIGGER safety ON DATABASE; GO ENABLE TRIGGER safety ON DATABASE; GO c. Habilitar todos los desencadenadores que se definieron con el mismo ámbito En el ejemplo siguiente se habilitan todos los desencadenadores DDL creados en el ámbito del servidor. USE AdventureWorks2012; GO ENABLE TriggerALLONALL SERVER; GO D. DISABLE TRIGGER (Transact-SQL) Deshabilita un desencadenador.De forma predeterminada, los desencadenadores se habilitan cuando se crean. Al deshabilitar un
  17. 17. Universidad Nacional de Trujillo TRIGGERS Escuela de Ingeniería de Sistemas 17 desencadenador no se quita. Sigue siendo un objeto de la base de datos actual. Sin embargo, el desencadenador no se activa cuando se ejecuta una instrucción Transact-SQL en la que se programó Ejemplos: a. Deshabilitar un desencadenador DML en una tabla En el ejemplo siguiente se deshabilita el desencadenador uAddress, que se creó en la tabla Address. USE AdventureWorks2012; GO DISABLE TRIGGERPerson.uAddressONPerson.Address; GO b. Deshabilitar un desencadenador DDL En el ejemplo siguiente se crea un desencadenador DDL safety, con ámbito en la base de datos, y después se deshabilita. IFEXISTS(SELECT*FROMsys.triggers WHEREparent_class=0AND name ='safety') DROPTRIGGER safety ON DATABASE; GO CREATETRIGGER safety ON DATABASE FOR DROP_TABLE, ALTER_TABLE AS PRINT 'You must disable Trigger "safety" to drop or alter tables!' ROLLBACK; GO DISABLE TRIGGER safety ON DATABASE; GO c. Deshabilitar todos los desencadenadores que se definieron con el mismo ámbito En el ejemplo siguiente se deshabilitan todos los desencadenadores DDL creados en el ámbito de servidor. USE AdventureWorks2012; GO DISABLE TriggerALLONALL SERVER;
  18. 18. Universidad Nacional de Trujillo TRIGGERS Escuela de Ingeniería de Sistemas 18 BIBLIOGRAFIA:  HEURTEL, O. (2009).PHP y MySQL Domine el desarrollo Web dinamico e interactivo. Madrid.  http://oscarae.files.wordpress.com/2012/03/trigger.pdf  http://es.wikipedia.org/wiki/Trigger_(base_de_datos)  http://www.sqlserverya.com.ar/temarios/descripcion.php?cod=147&punto=141

×