Maison >base de données >tutoriel mysql >Comment éviter les entrées en double dans les tables MySQL à l'aide de déclencheurs ?
Contexte :
Dans ce scénario, l'objectif est de garantir que les combinaisons d'éléments uniques Les URL et les chaînes de paramètres conservent leur unicité dans une table MySQL. Cependant, la longueur de la chaîne de paramètres dépasse la limite de longueur de clé pour MySQL, empêchant l'utilisation de contraintes de clé uniques.
Implémentation du déclencheur :
Pour résoudre ce problème, les déclencheurs peuvent être utilisé pour appliquer la contrainte d’unicité. Le code de déclenchement vérifie les entrées en double avant d'autoriser l'opération d'insertion.
Gestion des entrées en double :
Le code de déclenchement comprend deux parties critiques :
Abandonner/Raise Exception en C# :
Pour lever une exception lorsque une entrée en double est détectée, le code suivant peut être ajouté :
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Duplicate entry detected';
Solution améliorée :
Un plus La solution avancée utilise la fonction SIGNAL de MySQL, qui permet des messages d'erreur personnalisés et des exceptions piégées. Cette approche est décrite dans le code fourni :
CREATE TRIGGER `TestTable_SomeTrigger` BEFORE UPDATE ON `test_table` FOR EACH ROW BEGIN DECLARE msg VARCHAR(255); IF (SomeTestToFail = "FAIL!") THEN set msg = "DIE: You broke the rules... I will now Smite you, hold still..."; SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = msg; END IF; -- Do any other code here you may want to occur if it's all OK or leave blank it will be -- skipped if the above if is true END$$
Cette méthode renvoie un message d'erreur personnalisé qui peut être intercepté et géré dans le code C#.
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!