Utiliser des fonctions d'erreur dans un TRY...CATCH imbriqué
Vous avez reçu de nouveaux vélos électriques pour votre magasin, vous devez donc mettre le stock à jour.
Vous voulez consigner la réception de 2 vélos Trek Powerfly 5 - 2018 au prix de 3 499,99 $ chacun, et de 3 vélos New Power K- 2018 à 1 999,99 $ chacun.
Vous tentez d'insérer les produits dans la base de données, car vous pensez qu'il s'agit de nouveaux modèles. Cependant, vous avez oublié que le premier est déjà en stock. Heureusement, la table products comporte une contrainte exigeant que chaque nom de produit soit unique.
Vous préparez un script qui gère les erreurs possibles lors des insertions. Vous souhaitez aussi consigner les erreurs éventuelles dans une table appelée errors et, si l'insertion de l'erreur échoue, afficher le numéro et le message de l'erreur.
Cette activité fait partie du cours
Transactions et gestion des erreurs dans SQL Server
Instructions de l’exercice
- Encadrez la gestion des erreurs avec un bloc
CATCH. - Insérez
'Error inserting a product'dans la tableerrorset encadrez cette insertion avec un autre blocTRY. - Encadrez la gestion des erreurs imbriquée avec un autre bloc
CATCH. - Sélectionnez la ligne de l'erreur et le message d'erreur dans le bloc
CATCHinterne.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
BEGIN TRY
INSERT INTO products (product_name, stock, price)
VALUES ('Trek Powerfly 5 - 2018', 2, 3499.99),
('New Power K- 2018', 3, 1999.99)
END TRY
-- Set up the outer CATCH block
___ ___
SELECT 'An error occurred inserting the product!';
-- Set up the inner TRY block
___ ___
-- Insert the error
INSERT INTO ___
VALUES ('Error inserting a product');
___ ___
-- Set up the inner CATCH block
___ ___
-- Show number and message error
SELECT
___ AS line,
___ AS message;
___ ___
___ ___