-- 54 doit redevenir disponible
WHERE animal_id = 54;
UPDATE Adoption
SET animal_id = 38, prix = 985.00
-- 38 doit devenir indisponible
WHERE animal_id = 33;
-- et 33 redevenir disponible
INSERT INTO Adoption (client_id, animal_id, date_reservation, prix,
paye)
VALUES (9, 59, NOW(), 700.00, FALSE);
-- 59 doit devenir indisponible
SELECT Animal.id AS animal_id, nom, sexe, disponible, client_id
FROM Animal
LEFT JOIN Adoption ON Animal.id = Adoption.animal_id
WHERE Animal.id IN (33, 54, 55, 38, 59);
animal_id nom sexe disponible client_id
33
Caribou M
1
NULL
38
Boule
F
0
9
54
Bubulle M
1
NULL
55
Relou
M
0
9
59
Bavard M
0
9
Désormais, pour savoir quels animaux sont disponibles, il suffira de faire la requête suivante :
Code : SQL
SELECT *
FROM Animal
WHERE disponible = TRUE;
-- Ou même
SELECT *
FROM Animal
WHERE disponible;
Historisation
Voici deux exemples de systèmes d'historisation :
l'un très basique, gardant simplement trace de l'insertion (date et utilisateur) et de la dernière modification (date et
utilisateur), et se faisant directement dans la table concernée ;
l'autre plus complet, qui garde une copie de chaque version antérieure des lignes dans une table dédiée, ainsi qu'une
copie de la dernière version en cas de suppression.
Historisation basique
On va utiliser cette historisation pour la table Race. Libre à vous d'adapter ou de créer les triggers d'autres tables pour les
historiser également de cette manière.
On ajoute donc quatre colonnes à la table. Ces colonnes seront toujours remplies automatiquement par les triggers.
Partie 5 : Sécuriser et automatiser ses actions
320/414
www.openclassrooms.com
Précédent

- 320/413

Suivant