Sunteți pe pagina 1din 3

Disparadores (triggers)

Un "trigger" (disparador o desencadenador) es un tipo de procedimiento


almacenado que se ejecuta cuando se intenta modificar los datos de una tabla
(o vista).
Se definen para una tabla (o vista) especfica. Se crean para conservar la
integridad referencial y la coherencia entre los datos entre distintas tablas. Si
se intenta modificar (agregar, actualizar o eliminar) datos de una tabla en la
que se defini un disparador para alguna de estas acciones (insercin,
actualizacin y eliminacin), el disparador se ejecuta (se dispara) en forma
automtica.
Un trigger se asocia a un evento (insercin, actualizacin o borrado) sobre una
tabla.
Ejemplo:
CREATE OR REPLACE TRIGGER "ALONSO"."INSERCIONNUMEROMAYOR1000" (El
create tigger se crea junto al nombre del disparador).
AFTER INSERT ON "ALONSO"."PRUEBA" (Se inserta en despus del on el
nombre de la tabla o vista para la cual se esta estableciendo el trigger.)
FOR EACH ROW WHEN (new.CAMPO2 > 1000) BEGIN insert into
resultadodisparador (fecha, aviso, tabla) (Se indica la accin que es el evento
deseado o tipo de modificacin que haremos ser sobre la tabla o vista que va
a activar el trigger ya sea un ser "insert", "update" o "delete" cualquiera de
ellos pero siempre se tiene que colocar una accin y si es mas de una, se
separa por comas.
values (Sysdate, 'Registro con CAMPO2 superior a 1000', 'PRUEBA');
END;(Para entonces aqu ya se especificaron las condiciones y acciones del
disparador, las condiciones que determinan cuando un intento de insercin,
actualizacin o borrado provoca las acciones que el trigger realizar.
On este es el disparador, cuando un usuario inserte un registro en la tabla
PRUEBA con su CAMPO2 tenga un valor superior a 1000 se agregara
automticamente otro registro en la tabla "resultadodisparador" con la fecha
de la insercin sysdate, el aviso "Registro con CAMPO2 superior a 1000" y el
nombre de la tabla origen del disparador "PRUEBA".
Funciones escalares
Las funciones escalares definidas por el usuario devuelven un nico valor de
datos del tipo definido en la clusula RETURNS. En una funcin escalar
insertada no hay cuerpo de la funcin; el valor escalar es el resultado de una

sola instruccin. Para una funcin escalar de varias instrucciones, el cuerpo de


la funcin, definido en un bloque BEGIN...END, contiene una serie de
instrucciones de Transact-SQL que devuelven el nico valor. El tipo devuelto
puede ser de cualquier tipo de datos excepto text, ntext, image, cursor y
timestamp.
Calculo del IVA:
-Creamos la funcion conel nombre IVA
-Indicamos el parmetro de entrada y tipo: @cantidad money
Create function IVA (@cantidad money) Returns money -- Indicamos el tipo de
parmetros que retornar la funcin.
as
-Encapsulamos el conjunto de funciones dentro de un Begin y un end.
Begin
-Dentro de la sentencia o funcion podemos manejar variables
-aunque puede no ser necesario para ser ms eficiente la funcin.
-por cuestiones de ejemplo usamos la variable @resultado
Declare @resultado money
set @resultado = @cantidad * 0.16
-Cuando terminamos la funcin ponemos el Return
Return (@resultado) -- Y la variable que devolver la funcin @resultado.
End
Para llamar a la funcin la llamamos con un nombre de dos partes, con el
esquema.funcion mas el parametro que requiere la funcion:
Select campo_producto, campo_unidadprecio, dbo.iva(campo_unidadprecio) as
iva from tabla

Funciones con valores de tabla


Las funciones con valores de tabla definidas por el usuario devuelven un tipo
de datos table. Las funciones con valores de tabla insertados no tienen cuerpo;
la tabla es el conjunto de resultados de una sola instruccin SELECT.
--Creamos una funcin que se le ingrese por parmetro el pas y devuelva los
clientes de ese pas:
Create function ListadoPais (@pais varchar(100))
returns @clientes table -- Decimos que retornamos como resultado una
variable de tipo tabla y la declaramos (customerid varchar(5), companyname
varchar(50), -- Se definen las columnas que se necesiten contactname
varchar(100), country varhcar(100) ) as

-- Iniciamos la funcin. La variable tipo tabla @clientes es la que vamos a


devolver como resultado de la funcin
begin
Insertamos a la variabla tipo tabla @clientes:
Insert @clientes select customerid, companyname, contactname, country from
customers where country = @pais -- variable @pais de entrada en la funcin
Return
end
Para ver la funcin funcionando:
Select * from dbo.ListadoPais('Argentina')

Funciones integradas
SQL Server proporciona funciones integradas para ayudarle a realizar diversas
operaciones. No se pueden modificar. Puede utilizar funciones integradas en
instrucciones Transact-SQL para:
Tener acceso a informacin de las tablas del sistema de SQL Server sin tener
acceso a las tablas del sistema directamente. Para obtener ms informacin,
vea Usar las funciones del sistema.
Realizar tareas habituales como SUM, GETDATE o IDENTITY. Para obtener ms
informacin, vea Funciones integradas (Transact-SQL).
Las funciones integradas devuelven tipos de datos escalares o table. Por
ejemplo, @@ERROR devuelve 0 si la ltima instruccin Transact-SQL se ejecut
correctamente. Si la instruccin gener un error, @@ERROR devuelve el
nmero de error. Y la funcin SUM(parameter) devuelve la suma de todos los
valores del parmetro.

S-ar putea să vă placă și