Maison > base de données > tutoriel mysql > le corps du texte

Les déclencheurs MySQL peuvent-ils empêcher l'échec des opérations INSERT ?

Mary-Kate Olsen
Libérer: 2024-11-14 09:56:02
original
478 Les gens l'ont consulté

Can MySQL Triggers Prevent INSERT Operations from Failing?

Provoquer l'échec des INSERTs avec des déclencheurs

Bien que les déclencheurs dans MySQL puissent modifier les données avant une insertion ou une mise à jour, on pensait initialement qu'ils pouvaient n’empêche pas l’opération d’échouer. Cependant, une exploration plus approfondie a révélé qu'il existe des méthodes pour obtenir cette fonctionnalité.

Solution de contournement de MySQL

Dans les versions MySQL 5.0 et 5.1, une solution de contournement peut être utilisée pour abandonner un déclencher et fournir un message d’erreur. Cela implique d'essayer d'accéder à une colonne inexistante :

CREATE TRIGGER mytabletriggerexample
BEFORE INSERT
FOR EACH ROW
BEGIN
IF(NEW.important_value) < (fancy * dancy * calculation) THEN
    DECLARE dummy INT;

    SELECT Your meaningful error message goes here INTO dummy 
        FROM mytable
      WHERE mytable.id=new.id
END IF; END;
Copier après la connexion

Si la condition est remplie, le déclencheur tente de sélectionner le message d'erreur dans une table inexistante, provoquant l'échec de l'insertion avec le message fourni. .

Autres SGBDR

La possibilité de lever une exception dans un déclencheur et d'abandonner l'opération n'est pas universellement prise en charge dans tous les SGBDR. Cependant, certaines bases de données proposent des mécanismes alternatifs pour gérer les erreurs de validation dans les déclencheurs. Par exemple :

  • PostgreSQL : La commande RAISE EXCEPTION peut être utilisée pour déclencher une exception et fournir un message d'erreur.
  • Oracle : L'instruction SIGNAL permet de déclencher des avertissements ou des erreurs au sein d'un déclencheur.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal