Adloun

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

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →