Spring Boot : écrire le serveur (école d'ingénieur) · Chapitre 10 · Exercice de TD
Un stock négatif
PostgreSQL et les migrations · niveau 1 (application)
Énoncé
La méthode retirerDuStock empêche déjà un stock négatif. À quoi sert alors check (stock >= 0) dans V1 ? Le constater par un test qui écrit directement en SQL.
Corrigé
Le code Java n'est pas le seul à écrire dans la base : un script de reprise de données, une correction faite à la main en SQL, un autre programme. La contrainte protège la donnée quel que soit le chemin.
@Test
void laBaseRefuseUnStockNegatif() {
// exercice 10.5 : la contrainte CHECK de V1, même en contournant Java
assertThatThrownBy(() -> jdbc.update("update livre set stock = -1 where isbn = '9782956300014'"))
.isInstanceOf(DataIntegrityViolationException.class)
.satisfies(e -> System.out.println("Refus : "
+ ((DataIntegrityViolationException) e).getMostSpecificCause().getMessage()));
}
Refus : ERROR: new row for relation "livre" violates check constraint "livre_stock_check"
PostgreSQL a nommé lui-même la contrainte d'après la table et la colonne.
100 % gratuit
La suite du chapitre est sur Adloun
- 10 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.