create database dbt7
use dbt7
/*
-- Diferencia entre “Trigger”, “Function” y “Stored Procedure”.
----------------------------------------------------------------------------------------------------------------------------- ---
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 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, borrado o
actualización, ya que
modifican los datos de una tabla.
----------------------------------------------------------------------------------------------------------------------------- ---
Function: Es una variante del procedimiento almacenado, pero estos siempre retornan con datos
de algún tipo especifico, no como los trigger ni los store procedure.
----------------------------------------------------------------------------------------------------------------------------- ---
Stored Procedure: Es un programa almacenado físicamente en
una base de datos. Su implementación varia de un gestor de bases de datos a otros. 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
bases de datos, el cual
usualmente corre en un servidor separado.
----------------------------------------------------------------------------------------------------------------------------- ---
*/
create table Cliente(
Id int primary key not null identity,
nombre varchar(50),
fechaIng date,
FechaNac date,
estado int
);
create table Cliente_hist(
Id int primary key not null,
nombre varchar(50),
fechaIng date,
Fecha_movido date,
);
------------------------------------------Edad------------------------------------------------------------
alter function edad_cliente (@id int) returns int
as
begin
declare @fechactual date
declare @fechanac date
declare @edad int
select @fechanac = FechaNac from Cliente where Id=@id
select @fechactual = GETDATE()
set @edad = CONVERT(int, YEAR(@fechactual))-CONVERT(int,YEAR(@fechanac))
return @edad
end
select Nombre, dbo.edad_cliente(5) as Edad
from Cliente where Id=5
select CONVERT(int,YEAR(fechaIng)) from Cliente truncate table Cliente
create or alter trigger tg_insertar_cliente on Cliente
after insert
as
begin
declare @id int
declare @fechaing date
declare @nombre varchar(50)
select @nombre = nombre from Cliente where Id=@id
select @fechaing= fechaIng from Cliente where Id = @id
select @id = Id from inserted
select @fechaing = fechaIng from inserted
insert into dbo.Cliente_hist(Id,nombre,fechaIng ,Fecha_movido) values (@id,@nombre,@fechaing,
GETDATE())
end
select*from Cliente_hist
select*from Cliente
insert into Cliente values
('Junior Guzman Casares','20220617','19871021',1),
('Maria Castañuelas Almonte','20181121','20020522',2),
('Angel Batista Baez','20160728','20000101',2),
('Ricardo Manzueta Arias','20230415','19951231',1),
('Altagracia Rios Martinez','20200331','19570909',2)