use master
go
create database bdvgde
go
use bdvgde
go
create table categoria
(
idcategoria int identity (1,1) primary key,
nombre nvarchar(50) not null,
estado bit
)
go
insert into categoria(nombre,estado) values ('ferreteria',1)
insert into categoria(nombre,estado) values ('verduras',1)
insert into categoria(nombre,estado) values ('electrodomesticos',1)
create table marca
(
idmarca int identity(1,1) primary key,
nombremarca nvarchar(50) not null,
estado bit
)
go
insert into marca(nombremarca,estado) values ('philips',1)
insert into marca(nombremarca,estado) values ('toyota',1)
insert into marca(nombremarca,estado) values ('suzuki',1)
insert into marca(nombremarca,estado) values ('tramontina',1)
go
create table producto
(
idproducto int IDENTITY(100,1) PRIMARY KEY ,
idcategoria int not null foreign key references categoria(idcategoria),
idmarca int not null foreign key references marca(idmarca),
codigo char(10),
nombre nvarchar(50) null,
precio float not null,
cantidad int not null,
estado bit
)
go
insert into producto(idcategoria,idmarca,codigo,nombre,precio,cantidad,estado)
values(1,1,'C001','alicate',11,0,1)
insert into producto(idcategoria,idmarca,codigo,nombre,precio,cantidad,estado)
values(2,1,'C002','martillo',22,0,1)
insert into producto(idcategoria,idmarca,codigo,nombre,precio,cantidad,estado)
values(1,1,'C003','tenaza',33,0,1)
insert into producto(idcategoria,idmarca,codigo,nombre,precio,cantidad,estado)
values(1,1,'C004','carretilla',44,0,1)
insert into producto(idcategoria,idmarca,codigo,nombre,precio,cantidad,estado)
values(1,1,'C005','lija',22,0,1)
insert into producto(idcategoria,idmarca,codigo,nombre,precio,cantidad,estado)
values(1,1,'C006','llave crecen',32,0,1)
go
select * from producto
select * from categoria
select * from marca
-- crear un procedimiento almacenado
create proc compraproducto
@codigoproducto char (10),
@cantidadcomprada int
as
update producto set cantidad = cantidad + @cantidadcomprada where codigo =
@codigoproducto
go
-- ejecutando el procedimiento almacenado
exec compraproducto 'C002',10
exec compraproducto 'C002',7
SELECT * FROM producto
go
-- ventas de productos
create proc ventaproducto
@codigoproducto char (10),
@cantidadvendida int
as
update producto set cantidad = cantidad - @cantidadvendida where codigo =
@codigoproducto
go
--ejecutar el procedimiento almacenado ventaproducto
exec ventaproducto 'C002',1
exec ventaproducto 'C002',5
select * from producto
--CREAR UNA TABLA HISTORIAL
create table historial
(
codigo char (10),
fecha date,
descripcion nvarchar(100),
usuario nvarchar(10)
)
-- TRIGGER
create trigger tr_productoinsertado
ON producto
for INSERT
AS
BEGIN
set nocount on
declare @cod_prod varchar(10) -- declarando una variable
select @cod_prod = codigo from inserted -- se almacena el codigo en la variable
cod_prod del registro nuevo
insert into historial values (@cod_prod,GETDATE(),'Se ha registrado un nuevo
producto',SYSTEM_USER)
END
select * from producto
select * from historial
insert into producto(idcategoria,idmarca,codigo,nombre,precio,cantidad,estado)
values(3,2,'C111','pala tramontina',1,1,1)
select * from categoria
----------------------------
select * from producto
-- TRIGGER
create trigger tr_productoeliminado
ON producto
for delete
AS
BEGIN
set nocount on
declare @cod_prod varchar(10) -- declarando una variable
select @cod_prod = codigo from deleted -- se almacena el codigo en la variable
cod_prod del registro a eliminar
insert into historial values (@cod_prod,GETDATE(),'Se ha eliminado un
registro',SYSTEM_USER)
END
--
select * from historial
select * from producto
delete from producto where idproducto = 101
---------------------------------
update producto set cantidad = 0 where idproducto = 108
-- trigger
create trigger tr_productomodificado
ON producto
for update
AS
BEGIN
set nocount on
declare @cod_prod varchar(10) -- declarando una variable
select @cod_prod = codigo from update -- se almacena el codigo en la variable
cod_prod del registro a eliminar
insert into historial values (@cod_prod,GETDATE(),'Se ha eliminado un
registro',SYSTEM_USER)
END