create database ejerjuevest31
use ejerjuevest31
create table Descuento(
codigo_dcto numeric constraint pkdescuento primary key(codigo_dcto ),
anticipo numeric,
dcto_afp numeric,
dcto_isapre numeric
);
create table Haber(
cod_haberes numeric constraint pkhaberes primary key(cod_haberes),
pago_h_ext numeric,
bono numeric,
gratifi numeric,
aguinaldo numeric
);
create table DatosP(
rut char(12) constraint pkdatosp primary key(rut),
nombre varchar(50),
direccion varchar(50),
nombre_afp varchar(30),
nom_isapre varchar(30),
fono numeric,
edad numeric,
sliquido numeric
);
create table calsueldo(
cod_trab numeric constraint pkcalsueldo primary key(cod_trab),
rut char(12) constraint fkdatosp foreign key references DatosP(rut),
codigo_dcto numeric constraint fkdescuento foreign key references Descuento(codigo_dcto ),
total_dcto numeric,
cod_haberes numeric constraint fkhaber foreign key references Haber(cod_haberes),
total_haber numeric
);
drop table calsueldo
insert into datosP values('11.111.111-1','Juan Perez','alameda 42','Habitad','Banmedica',111222,30,NULL);
insert into haber values(101,null,30000,15000,50000);
insert into descuento values(201,30000,15000,11000);
insert into calsueldo values(301,'11.111.111-1',201,null,101,null);
- actualize 2 registros de la tabla descuento y quequee el campo 'Total_dto' en la tabla calsueldo( se debe actualizar )
*/
update Descuento set anticipo=5000,dcto_afp=10000,dcto_isapre=5000 where codigo_dcto =201
update descuento set anticipo=8000,dcto_afp=15000,dcto_isapre=5000 where codigo_dcto =202
create procedure CalDescuento
@codigo_dcto numeric
as
declare @total_dcto numeric
declare @anticipo numeric
declare @dcto_afp numeric
declare @dcto_isapre numeric
select @anticipo = (anticipo),@dcto_afp=(dcto_afp),@dcto_isapre=(dcto_isapre) from descuento where @codigo_dcto =codigo_dcto
select @total_dcto=(total_dcto) from calsueldo where @codigo_dcto =codigo_dcto
/* reparar*/
set @anticipo=(anticipo)
set @dcto_afp=(dcto_afp)
set @dcto_isapre=(dcto_isapre)
set @total_dcto = (@dcto_isapre+@dcto_afp)+@anticipo
update calsueldo set total_dcto=@total_dcto where codigo_dcto =@codigo_dcto
select * from calsueldo where codigo_dcto =@codigo_dcto
execute CalDescuento 201
eso es y tengo q ir actualizando en cascada