Triggers o disparadores
Los triggers o disparadores son un tipo especial de procedimiento almacenado en los Sistemas Gestores de Bases de Datos (SGBD), que es ejecutado en el momento en que se active un evento en la base de datos a nivel del lenguaje de manipulación de datos (LMD), el lenguaje de definición de datos (LDF) o bien en el momento de acceso del SGBD.
En este caso hablaremos de los triggers LMD, los cuales con ejecutados al momento de realizar algún evento sobre los datos de tipo de inserción, modificación o borrado de alguna tabla en particular.
Este tipo de trigger se define independientemente del código de creación de la tablas, sin embargo debe quedar asociada a alguna de estas. La sintaxis a seguir es la siguiente:
En este caso hablaremos de los triggers LMD, los cuales con ejecutados al momento de realizar algún evento sobre los datos de tipo de inserción, modificación o borrado de alguna tabla en particular.
Este tipo de trigger se define independientemente del código de creación de la tablas, sin embargo debe quedar asociada a alguna de estas. La sintaxis a seguir es la siguiente:
Trigger on an INSERT, UP
DATE, or DELETE statement to a table or view (DML Trigger)
CREATE TRIGGER [ schema_name . ]trigger_name
ON { table | view }
[ WITH <dml_trigger_option> [ ,...n ] ]
{ FOR | AFTER | INSTEAD OF }
{ [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] }
[ 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
CREATE TRIGGER [ schema_name . ]trigger_name
ON { table | view }
[ WITH <dml_trigger_option> [ ,...n ] ]
{ FOR | AFTER | INSTEAD OF }
{ [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] }
[ 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
Cursores
Los cursores son una herramienta eficaz para la manipulación de lo datos en operaciones que requieran el acceso secuencial de la información en modo tupla por tupla.
En muchas ocaciones se requiere realizar modificaciones individuales en cada tupa de una o varias tablas, basado en la respuesta de un subconsulta por lo que resulta imposible efectuarlo como una instrucción de borrado, o modificación en bloque, como normalmente se conocen.
La sintaxis para declarar cursores es la siguiente:
ISO Syntax
DECLARE cursor_name [ INSENSITIVE ] [ SCROLL ] CURSOR
FOR select_statement
[ FOR { READ ONLY | UPDATE [ OF column_name [ ,...n ] ] } ]
[;]
Transact-SQL Extended Syntax
DECLARE cursor_name CURSOR [ LOCAL | GLOBAL ]
[ FORWARD_ONLY | SCROLL ]
[ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ]
[ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ]
[ TYPE_WARNING ]
FOR select_statement
[ FOR UPDATE [ OF column_name [ ,...n ] ] ]