Está en la página 1de 2

Revisa y comenta brevemente sobre los siguientes puntos:

a) Diferencia entre “trigger”, “Function” y “Stored Procedure”


Un trigger es un objeto que se asocia con tablas y se almacena en la base de
datos. Su nombre se deriva por el comportamiento que presenta 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 modifican los datos de una tabla.
Una función es un bloque que devuelve un valor.
Un procedimiento almacenado (Stored Procedure) es un programa
almacenado físicamente en una base de datos. Su implementación varia de un
gestor de base de datos a otro. La ventaja de un procedimiento almacenado es
que, al ser ejecutado, en respuesta a una petición de usuario, es ejecutado
directamente en el motor de base de datos, el cual usualmente corre en un
servidor separado.
Diferencias:
Viendo las definiciones de los temas en cuestión podemos determinar algunas
diferencias entre estos, estas diferencias son:
1. En las funciones se devuelve especificaciones un valor mientras que en los
triggers y procedures es posible devolver más de un valor.
2. Los procedures tienen acceso directo a los datos que manipulara, sin
sobrecarga, las demás funcionalidades difieren de los procedures en este
sentido.
3. Los eventos que provocan que los triggers corran son INSERT, DELETE,
UPDATE. También poseen una cualidad que se puede configurar en el
momento que se realizara, las demás funcionalidades difieren de los
triggers en este sentido.
Partiendo de las siguientes tablas, crea una función que reciba como
parámetro el ID del cliente, lo busque que retorne la edad calculada.
Create function dbo.calcularedad(@id int)
returns int
as
begin

declare @fecha varchar(30)


select @fecha = DATEDIFF(DAY, Fechaing, Fecha_movido)
from Cliente_hist where id = @id
return @fecha
end

Select dbo.calcularedad(1)

Partiendo de las tablas creadas en el punto anterior, crea un “trigger” que


permita registrar en la tabla histórica todos los clientes que se inserten en la
tabla “cliente”.

Create trigger tarea on Cliente


for insert
as

declare @id int


declare @nombre varchar (50)
declare @fechaing date
declare @estado int

select @id = c.id from Cliente c


select @nombre = c.nombre from Cliente c
select @fechaing = c.fechaing from Cliente c
select @estado = c.estado from Cliente c

insert into Cliente_hist(ID_hist, Nombre_hist, Fechaing_hist,


Fecha_movido)
values (@id, @nombre, @fechaing, GETDATE())

insert into Cliente


values (1, 'Juan' '2010-07-01', 1)

Select * from Cliente_hist

También podría gustarte