Maison > Article > base de données > Comment pouvons-nous utiliser l'instruction SIGNAL avec les déclencheurs MySQL ?
En fait, l'instruction MySQL SIGNAL est un mécanisme de gestion des erreurs utilisé pour gérer les événements inattendus et quitter l'application en douceur en cas de besoin. Fondamentalement, il fournit des informations sur les erreurs au gestionnaire. Sa syntaxe de base est la suivante -
SIGNAL SQLSTATE | condition_value [SET signal_information_item = value_1,[, signal_information_item] = value_2, etc;]
Ici, le mot-clé SIGNAL est la valeur SQLSTATE ou le nom de la condition déclaré par l'instruction DECLARE CONDITION. Les instructions SIGNAL doivent toujours spécifier une valeur SQLSTATE ou une condition nommée définie à l'aide d'une valeur SQLSTATE. La valeur SQLSTATE d'une instruction SIGNAL se compose d'un code alphanumérique à cinq caractères. Nous ne pouvons pas démarrer notre propre code SQLSTATE avec "00" car une telle valeur indique un succès et n'a aucun effet sur le signalement d'une erreur. Si notre valeur n'est pas valide, une erreur Bad SQLSTATE se produira. Pour détecter toutes les erreurs, nous devons attribuer la valeur SQLSTATE "45000", ce qui signifie "Exception définie par l'utilisateur non gérée".
Pour illustrer l'utilisation de l'instruction SIGNAL avec les déclencheurs MySQL, nous utilisons l'exemple suivant dans lequel nous créons un déclencheur BEFORE INSERT sur la table Student_age. Si nous essayons de saisir un âge inférieur à 0, un message d'erreur sera généré à l'aide de l'instruction SIGNAL.
mysql> Create trigger before_insert_studentage BEFORE INSERT on student_age FOR EACH ROW BEGIN IF NEW.age<0 then SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'age less than 0'; END if; END; // Query OK, 0 rows affected (0.12 sec) mysql> Insert into student_age(age, name) values(-10,'gaurav')// ERROR 1644 (45000): age less than 0
D'après l'ensemble de résultats ci-dessus, il est clair que si nous essayons d'insérer un âge inférieur à 0, l'utilisation de l'instruction SIGNAL générera une erreur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!