Maison >base de données >tutoriel mysql >Les déclencheurs peuvent-ils empêcher les opérations INSERT dans MySQL ?

Les déclencheurs peuvent-ils empêcher les opérations INSERT dans MySQL ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-13 16:05:02769parcourir

Can Triggers Prevent INSERT Operations in MySQL?

Les déclencheurs peuvent-ils provoquer l'échec des INSERT ?

Dans MySQL, les déclencheurs tels que BEFORE INSERT peuvent modifier les données avant leur insertion dans une table. Cependant, il n'est pas immédiatement évident s'ils peuvent empêcher le succès de l'opération INSERT en raison d'erreurs de validation.

Tricherie MySQL

Cependant, des articles de blog ont révélé une technique pour contourner cette limitation. Par exemple, un déclencheur MySQL 5.0 ou 5.1 peut forcer une tentative d'accès à une colonne inexistante, ce qui déclenche une erreur et annule l'opération INSERT.

Exemple de déclencheur

Voici un exemple de déclencheur qui utilise cette astuce :

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;

Autre SGBDR

Bien que la solution de MySQL implique une solution de contournement, d'autres SGBDR peuvent fournir des méthodes plus directes pour échouer les INSERT dans les déclencheurs.

THROW EXCEPTION

Par exemple, Microsoft SQL Server inclut la syntaxe THROW EXCEPTION. Il permet aux déclencheurs de déclencher des exceptions pouvant abandonner l'opération INSERT.

db2

db2 prend en charge l'instruction SIGNAL, qui signale une condition définie par l'utilisateur qui peut mettre fin à l'INSERT. opération.

Remarque : Bien que ces techniques démontrent la capacité des déclencheurs à faire échouer les INSERT, il est il est important de faire preuve de prudence et de considérer les implications en termes de performances.

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!

Déclaration:
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