Abandon des opérations INSERT dans les déclencheurs MySQL : réalisation de contraintes uniques sur les paires URL-paramètres
Pour appliquer l'unicité à la combinaison d'URL et de chaîne de paramètre dans une table MySQL, des déclencheurs peuvent être utilisés. Cependant, l'abandon des opérations d'insertion dans un déclencheur pour éviter les entrées en double nécessite une gestion spécifique. Cet article vous guide à travers les étapes pour lever des exceptions et autoriser conditionnellement les insertions dans votre déclencheur.
Lancement d'exceptions vers C#
Pour signaler une erreur d'entrée en double dans le code C# , vous pouvez utiliser l'instruction SIGNAL de MySQL dans le déclencheur. Vous trouverez ci-dessous l'extrait de code mis à jour pour le déclencheur urls_check_duplicates :
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 '45000' SET MESSAGE_TEXT = 'Duplicate URL-parameter pair found'; ELSE ... Allow insert ... END
Dans votre code C#, vous pouvez gérer l'erreur générée par le déclencheur à l'aide de la classe MySqlException :
try { // Execute INSERT statement } catch (MySqlException ex) { if (ex.Message.Contains("Duplicate URL-parameter pair found")) { // Handle duplicate entry error } }
Autorisation d'insertion conditionnelle
Pour autoriser l'insertion uniquement s'il n'y a pas de doublon entrée, supprimez simplement le bloc ELSE dans le code de déclenchement. Le code suivant insère uniquement des paires de paramètres URL uniques :
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 '45000' SET MESSAGE_TEXT = 'Duplicate URL-parameter pair found'; END
En utilisant une combinaison de SIGNAL et d'exécution conditionnelle dans le déclencheur, vous pouvez appliquer efficacement la contrainte unique sur les paires de paramètres URL dans votre table MySQL.
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!