Maison > base de données > tutoriel mysql > Comment abandonner ou autoriser les opérations MySQL INSERT à l'aide de déclencheurs pour éviter les entrées en double ?

Comment abandonner ou autoriser les opérations MySQL INSERT à l'aide de déclencheurs pour éviter les entrées en double ?

Barbara Streisand
Libérer: 2024-12-12 12:15:28
original
210 Les gens l'ont consulté

How to Abort or Allow MySQL INSERT Operations Using Triggers to Prevent Duplicate Entries?

Abandon des opérations MySQL INSERT avec des déclencheurs

Pour éviter les entrées en double dans une table basée à la fois sur l'URL et la chaîne de paramètres, un déclencheur peut être implémenté . Ce déclencheur évaluera si une opération INSERT entrante entraînerait une duplication et, si nécessaire, lèvera une exception ou autorisera l'insertion en conséquence.

Annulation de l'opération

Pour la partie "... ABORT/throw exception to C#...", vous pouvez utiliser l'instruction SIGNAL :

SIGNAL SQLSTATE 'HY000' SET MESSAGE_TEXT = 'Duplicate entry: URL and parameter string already exists.';
Copier après la connexion

Cela déclenchera une exception MySQL que votre Le code C# peut attraper.

Autoriser l'insertion

Pour la partie "... Autoriser l'insertion...", omettez simplement l'instruction SIGNAL. L'insertion se déroulera comme d'habitude si aucune entrée en double n'est détectée.

Code de déclenchement révisé

Voici le code de déclenchement modifié intégrant à la fois la logique d'abandon et la logique d'autorisation d'insertion. :

CREATE TRIGGER urls_check_duplicates
BEFORE INSERT ON urls
FOR EACH ROW

BEGIN
DECLARE num_rows INTEGER;

SELECT COUNT(*)
INTO num_rows
FROM urls
WHERE url = NEW.url AND params = NEW.params;

IF num_rows > 0 THEN
   SIGNAL SQLSTATE 'HY000' SET MESSAGE_TEXT = 'Duplicate entry: URL and parameter string already exists.';
END
END
Copier après la connexion

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