Crear un trigger sobre
la tabla productos, para que antes de insertar un
producto, comprueba que el
precio unitario del producto insertado no sea
ni negativo ni superior a
1000. (use sentencia condicional)
delimiter
$$
create
trigger precio_Venta before insert on
Productos
for each
row
begin
if
new.PrecioVenta <0 then
set
new.PrecioVenta=0;
elseif
new.PrecioVenta >1000 then
set
new.PrecioVenta=1000;
end if;
end; $$
Controlar que cuando se
inserte un nuevo producto, la cantidad en stock
sea siempre 10,
independientemente del valor introducido en la inserción.
delimiter
$$
create
trigger ejercicio_7 before insert
on
productos for each row
begin
set
new.CantidadEnStock=10;
end; $$
Controlar que cuando en la
tabla Pedidos se cambie el valor del campo
Estado a ‘Entregado’, la
fecha de Entrega sea mayor o igual que la fecha
del pedido. En caso de no
serlo obligar a que sea igual. (use sentencia
condicional).
Delimiter $$
create
trigger ejercicio_8 before update
on pedidos
for each row
begin
if
new.Estado="Entregado" then
if
new.FechaEntrega < new.FechaEntrega then
set
new.FechaEntrega=new.FechaPedido;
end if;
end if;
end; $$
Añadir una columna
‘TotalLinea’ a la tabla DetallePedidos:
ALTER TABLE `jardineria`.`detallepedidos`
ADD COLUMN `totalLinea` DECIMAL(10,2) NULL DEFAULT 0 AFTER
`NumeroLinea`;
Debe controlar que cada vez
que se haga cualquier operación en la tabla
DetallePedidos (INSERT,
UPDATE, DELETE), y sólo cuando cambien los
valores de las columnas Cantidad
y PrecioUnidad se actualice el campo
nuevo TotalLinea y sea igual
a Cantidad * PrecioUnidad.
Update
delimiter
$$
create
trigger ejercicio_10 before update
on
detallepedidos for each row
begin
if
new.Cantidad<>old.Cantidad ||
new.PrecioUnidad<>old.PrecioUnidad
then
set
new.totallinea=new.Cantidad * new.PrecioUnidad;
end
if end; $$
Insert
delimiter
$$
create
trigger ejercicio_10_insertar before insert
on
detallepedidos for each row
begin
if
new.Cantidad>0 ||
new.PrecioUnidad>0
then
set new.totallinea=new.Cantidad
* new.PrecioUnidad;
end if;
end; $$
delete
Se desea almacenar en una
tabla la deuda que tiene cada cliente con la
empresa. Tenga en cuenta las
siguientes consideraciones:
a. La tabla Pagos almacena los
pagos YA realizados.
b. Los pedidos en estado
Entregado son los que se tienen en
cuenta cuando quiere
calcularse la deuda contraída.
create TABLE Deuda
( CodigoCliente int(11) not
null,pendiente_de_pago decimal(10.2),
Primary Key (CodigoCliente));
alter
TABLE Deuda
add
constraint deuda1
foreign
key (CodigoCliente)
references
clientes(CodigoCliente)
on delete restrict
on update cascade;
delimiter
$$
create
trigger ejercicio_11 after update on pedidos
for
each row
begin
declare
importe decimal (10.2);
if
new.Estado="Entregado" then
select
sum(Cantidad * PrecioUnidad)
into
importe
from
detallepedidos
where
CodigoPedido=new.CodigoPedido;
update
deuda
set
pendiente_de_pago=pendiente_de_pago + importe
where
CodigoCliente=new.CodigoCliente;
end
if;
end;
$$
No hay comentarios:
Publicar un comentario