BUT2/BD/Lekpa/tp02_2.txt

119 lines
2.4 KiB
Plaintext
Raw Normal View History

2023-11-29 16:08:44 +01:00
execice 1
create or replace function fn_points_fidelite(Id_client Number)
return Number
IS
V_pt_fidelite number;
Begin
Select sum(L.prix_total) Into V_pt_fidelite
from ligne_Commande L, Commande CO
where L.commande_id = CO.id AND CO.client_id = Id_client;
V_pt_fidelite := floor(V_pt_fidelite/10);
return V_pt_fidelite;
Exception
when No_data_found then
return 0;
end fn_points_fidelite;
select fn_points_fidelite(16) from dual;
declare
cursor C_client IS Select id, nom from client;
V_points number;
Begin
for v_client in c_client
loop
v_points := fn_points_fidelite(v_client.id);
if (v_points < 2) then
DBMS_OUTPUT.PUT_LINE(v_client.nom || 'à' || v_points || 'point de fidelité' );
else
DBMS_OUTPUT.PUT_LINE(v_client.nom || 'à' || v_points || 'points de fidelités' );
end if;
end loop;
end;
exercice 2
create or replace trigger trg_DeleteCommande
Before delete
on Commande
for each row
begin
delete from ligne_commande L where L.commande_id = :old.id;
end trg_DeleteCommande;
exercice 3
create or replace trigger trg_DeleteClient
Before delete
on Client
for each row
begin
delete from Commande CO where CO.client_id = :old.id;
end trg_DeleteCommande;
exercice 4
create table Client_His as select * from Client;
delete from Client_His;
create or replace trigger trg_DeleteClient
before delete
on Client
for each row
begin
delete from Commande CO where CO.client_id = :old.id;
insert into Client_His values (:old.id, :old.prenom, :old.nom, :old.email, :old.ville);
end trg_DeleteCommande;
exercice 5
la contrainte de suppression en cascade
exercice 6
drop table Client cascade constraints;
drop table Commande cascade constraints;
drop table ligne_commande cascade constraints;
CREATE TABLE client (
id INT PRIMARY KEY,
prenom VARCHAR(255),
nom VARCHAR(255),
email VARCHAR(255),
ville VARCHAR(255)
);
CREATE TABLE commande (
id INT PRIMARY KEY,
client_id INT,
date_achat DATE,
reference VARCHAR(255),
FOREIGN KEY (client_id) REFERENCES client(id) ON DELETE CASCADE
);
CREATE TABLE ligne_commande (
id INT PRIMARY KEY,
commande_id INT,
produit_id INT,
quantite INT,
prix_total DECIMAL(10, 2),
FOREIGN KEY (commande_id) REFERENCES commande(id) ON DELETE CASCADE,
FOREIGN KEY (produit_id) REFERENCES produit(id)
);
Exercice 7