Docente :Ing. Marco Aurelio Porro Chulli.
Asignatura :Base de Datos II.
Ciclo : VIII “A”
Integrante:
• Yenny Isabel Cuello Morón.
• Yanina Bustamante Jibaja.
INGENIERÍA DE SISTEMAS Y TELEMÁTICA
ACTIVADORES EN
SQL SERVER
DEFINICION
Son objetos que se asocian con tablas y se almacenan en la
base de datos. Su nombre se deriva por el comportamiento
que presentan en su funcionamiento, ya que se ejecutan
cuando sucede algún evento sobre las tablas a las que se
encuentra asociado.
Los eventos que hacen que se ejecute un trigger son las operaciones de inserción
(INSERT), borrado (DELETE) o actualización (UPDATE), ya que modifica los datos
de una tabla.
 Declarar variables locales
 Invocar procedimientos almacenados
Los triggers pueden:
 Llamarse directamente
 Usar parámetros
 Definirse sobre tablas temporales o vistas
 Crear objetos permanentes de base de datos
Los triggers no pueden:
SINTAXIS
CREATE [ OR ALTER ] TRIGGER [ schema_name . ]trigger_name
ON { table | view }
[ WITH <dml_trigger_option> [ ,...n ] ]
{ FOR | AFTER | INSTEAD OF }
{ [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] }
[ WITH APPEND ]
[ NOT FOR REPLICATION ]
AS { sql_statement [ ; ] [ ,...n ] | EXTERNAL NAME <method specifier [ ; ] > }
<dml_trigger_option> ::=
[ ENCRYPTION ]
[ EXECUTE AS Clause ]
<method_specifier> ::=
assembly_name.class_name.method_name
Administración de Activadores (Creación, Modificación y Eliminación)
CREACIÓN
sintaxis
CREATE TRIGGER [ schema_name . ]trigger_name
ON { table | view }
[ WITH <dml_trigger_option> [ ,...n ] ]
{ FOR | AFTER | INSTEAD OF }
{ [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] }
[ WITH APPEND ]
[ NOT FOR REPLICATION ]
AS { sql_statement [ ; ] [ ,...n ] | EXTERNAL NAME
<method specifier [ ; ] > }
EJEMPLO
CREATE TABLE EJ_TRIGGER (
A INT PRIMARY KEY,
B CHAR (30))
CREATE TRIGGER TR_I_EJ_TRIGGER ON EJ_TRIGGER FOR INSERT AS
IF datename(month, getdate()) = "October"
BEGIN
SELECT "En Octubre no hay inserciones"
ROLLBACK TRIGGER
END
INSERT INTO EJ_TRIGGER VALUES (2, 'Dos')
SELECT * FROM EJ_TRIGGER
MODIFICACIÓN
Sintaxis
CREATE TRIGGER emp_stamp BEFORE INSERT OR UPDATE ON emp
FOR EACH ROW EXECUTE PROCEDURE emp_stamp();
ELIMINACIÓN
Sintaxis
drop trigger nombre_del_trigger
EJEMPLOS
1.-Crear dos tablas
CREATE TABLE EJ_TRIGGER_2A (
A INT PRIMARY KEY,
B CHAR (30))
CREATE TABLE EJ_TRIGGER_2B (
ID NUMERIC IDENTITY PRIMARY KEY,
FECHA DATETIME,
FILAS INT)
2-Crear un trigger que guarde la fecha y número de filas
afectadas por cada delete:
CREATE TRIGGER TR_D_EJ_TRIGGER_2 ON
EJ_TRIGGER_2A FOR DELETE AS
INSERT INTO EJ_TRIGGER_2B VALUES (getdate(),
@@rowcount)
RETURN
Conclusiones
•Puedes invertir la lógica. En lugar de eliminar una fila no válida después de que se haya
insertado, escriba un activador, por ejemplo: INSTEAD OF para insertar solo si verifica que
la fila sea válida.
•Los activadores también pueden utilizarse para provocar actualizaciones en otras tablas,
para transformar o generar valores automáticamente en las filas insertadas o actualizadas,
o para invocar funciones que realicen tareas como la de emitir alertas.

Activadores

  • 1.
    Docente :Ing. MarcoAurelio Porro Chulli. Asignatura :Base de Datos II. Ciclo : VIII “A” Integrante: • Yenny Isabel Cuello Morón. • Yanina Bustamante Jibaja. INGENIERÍA DE SISTEMAS Y TELEMÁTICA ACTIVADORES EN SQL SERVER
  • 2.
    DEFINICION Son objetos quese asocian con tablas y se almacenan en la base de datos. Su nombre se deriva por el comportamiento que presentan en su funcionamiento, ya que se ejecutan cuando sucede algún evento sobre las tablas a las que se encuentra asociado.
  • 3.
    Los eventos quehacen que se ejecute un trigger son las operaciones de inserción (INSERT), borrado (DELETE) o actualización (UPDATE), ya que modifica los datos de una tabla.  Declarar variables locales  Invocar procedimientos almacenados Los triggers pueden:  Llamarse directamente  Usar parámetros  Definirse sobre tablas temporales o vistas  Crear objetos permanentes de base de datos Los triggers no pueden:
  • 4.
    SINTAXIS CREATE [ ORALTER ] TRIGGER [ schema_name . ]trigger_name ON { table | view } [ WITH <dml_trigger_option> [ ,...n ] ] { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] } [ WITH APPEND ] [ NOT FOR REPLICATION ] AS { sql_statement [ ; ] [ ,...n ] | EXTERNAL NAME <method specifier [ ; ] > } <dml_trigger_option> ::= [ ENCRYPTION ] [ EXECUTE AS Clause ] <method_specifier> ::= assembly_name.class_name.method_name
  • 5.
    Administración de Activadores(Creación, Modificación y Eliminación) CREACIÓN sintaxis CREATE TRIGGER [ schema_name . ]trigger_name ON { table | view } [ WITH <dml_trigger_option> [ ,...n ] ] { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] } [ WITH APPEND ] [ NOT FOR REPLICATION ] AS { sql_statement [ ; ] [ ,...n ] | EXTERNAL NAME <method specifier [ ; ] > }
  • 6.
    EJEMPLO CREATE TABLE EJ_TRIGGER( A INT PRIMARY KEY, B CHAR (30)) CREATE TRIGGER TR_I_EJ_TRIGGER ON EJ_TRIGGER FOR INSERT AS IF datename(month, getdate()) = "October" BEGIN SELECT "En Octubre no hay inserciones" ROLLBACK TRIGGER END INSERT INTO EJ_TRIGGER VALUES (2, 'Dos') SELECT * FROM EJ_TRIGGER
  • 7.
    MODIFICACIÓN Sintaxis CREATE TRIGGER emp_stampBEFORE INSERT OR UPDATE ON emp FOR EACH ROW EXECUTE PROCEDURE emp_stamp(); ELIMINACIÓN Sintaxis drop trigger nombre_del_trigger
  • 8.
    EJEMPLOS 1.-Crear dos tablas CREATETABLE EJ_TRIGGER_2A ( A INT PRIMARY KEY, B CHAR (30)) CREATE TABLE EJ_TRIGGER_2B ( ID NUMERIC IDENTITY PRIMARY KEY, FECHA DATETIME, FILAS INT)
  • 9.
    2-Crear un triggerque guarde la fecha y número de filas afectadas por cada delete: CREATE TRIGGER TR_D_EJ_TRIGGER_2 ON EJ_TRIGGER_2A FOR DELETE AS INSERT INTO EJ_TRIGGER_2B VALUES (getdate(), @@rowcount) RETURN
  • 10.
    Conclusiones •Puedes invertir lalógica. En lugar de eliminar una fila no válida después de que se haya insertado, escriba un activador, por ejemplo: INSTEAD OF para insertar solo si verifica que la fila sea válida. •Los activadores también pueden utilizarse para provocar actualizaciones en otras tablas, para transformar o generar valores automáticamente en las filas insertadas o actualizadas, o para invocar funciones que realicen tareas como la de emitir alertas.