Академический Документы
Профессиональный Документы
Культура Документы
Parte 1
Roco Contreras guila
Primer Semestre 2010
Triggers: ejercicio 1
Una empresa almacena los datos de sus empleados en una tabla denominada "empleados"
Ejercicio 1: 1.
if object_id('empleados') is not null
drop table empleados;
if object_id('secciones') is not null
drop table secciones;
Ejercicio 1: 2.
create table secciones(
codigo int identity,
nombre varchar(30),
sueldomaximo decimal(8,2),
constraint PK_secciones primary key(codigo)
);
create table empleados(
documento char(8) not null,
nombre varchar(30) not null,
domicilio varchar(30),
codigoseccion int not null,
sueldo decimal(8,2),
constraint PK_empleados primary key(documento),
constraint FK_empelados_seccion
foreign key (codigoseccion) references secciones(codigo)
);
Ejercicio 1: 3.
insert into secciones values('Administracion',1500);
insert into secciones values('Sistemas',2000);
insert into secciones values('Secretaria',1000);
insert into empleados values('22222222','Ana Acosta','Avellaneda
88',1,1100);
insert into empleados values('23333333','Bernardo Bustos','Bulnes
345',1,1200);
insert into empleados values('24444444','Carlos Caseres','Colon
674',2,1800);
insert into empleados values('25555555','Diana Duarte','Colon
873',3,1000);
Ejercicio 1: 4.
create trigger dis_empleados_insertar
on empleados
for insert
as
declare @maximo decimal(8,2)
set @maximo=(select sueldomaximo from secciones
join inserted
on inserted.codigoseccion=secciones.codigo)
if (@maximo<(select sueldo from inserted))
begin
declare @mensaje varchar(40)
set @mensaje='El sueldo debe ser menor a '+cast(@maximo as char(8))
raiserror(@mensaje, 16, 1)
rollback transaction
end;
Fuentes','Francia 938',2,1000);
R: 7. insert into empleados values('27777777','Gaston
Garcia','Guemes 366',3,1200);
R:8. select *from empleados; insert into empleados
values('27777777','Gaston Garcia','Guemes 366',9,1200);
Ejercicio 2
Un club de barrio almacena los datos de sus socios en una tabla
Estructura Tablas
Cree las tablas, con las siguientes estructuras:
create table socios(
documento char(8) not null,
nombre varchar(30),
domicilio varchar(30),
constraint PK_socios primary key (documento)
);
Estructura Tablas
create table inscriptos(
documento char(8) not null,
deporte varchar(30) not null,
matricula char(1),
constraint CK_inscriptos check (matricula in ('s','n')),
constraint PK_inscriptos primary key (documento,deporte),
constraint FK_inscriptos_documento foreign key(documento)
references socios (documento)
);
create table morosos(
documento char(8) not null
);
Ejercicio 2: 1.
create trigger dis_incriptos_insertar
on inscriptos
for insert
as
declare @doc char(8)
select @doc= documento from inserted
if exists (select *from morosos where documento=@doc)
begin
raiserror('No puede inscribir al socio porque es moroso', 16, 1)
rollback transaction
end;
Ejercicio 2: 2.
create trigger dis_incriptos_insertar2
on inscriptos
for insert
as
if (select matricula from inserted)='n'
insert into morosos select documento from inserted;
Ejercicio 2: 3.
create trigger dis_socios
on socios
for insert
as
raiserror('No puede ingresar nuevos socios', 16, 1)
rollback transaction;
Ejercicio 3: Vistas
Una empresa almacena la informacin de sus empleados en