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 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!