Hintergrund:
In diesem Szenario besteht das Ziel darin, sicherzustellen, dass Kombinationen eindeutig sind URLs und Parameterzeichenfolgen wahren die Einzigartigkeit in einer MySQL-Tabelle. Die Länge der Parameterzeichenfolge überschreitet jedoch die Schlüssellängenbeschränkung für MySQL, wodurch die Verwendung eindeutiger Schlüsselbeschränkungen verhindert wird.
Trigger-Implementierung:
Um dieses Problem zu beheben, können Trigger verwendet werden eingesetzt werden, um die Eindeutigkeitsbeschränkung durchzusetzen. Der Auslösercode prüft auf doppelte Einträge, bevor er den Einfügevorgang zulässt.
Umgang mit doppelten Einträgen:
Der Auslösercode enthält zwei kritische Teile:
Ausnahme für C# abbrechen/auslösen:
Um eine Ausnahme auszulösen, wenn a Wenn ein doppelter Eintrag erkannt wird, kann der folgende Code hinzugefügt werden:
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Duplicate entry detected';
Verbesserte Lösung:
Eine fortgeschrittenere Die Lösung nutzt die SIGNAL-Funktion von MySQL, die benutzerdefinierte Fehlermeldungen und abgefangene Ausnahmen ermöglicht. Dieser Ansatz wird im bereitgestellten Code beschrieben:
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$$
Diese Methode gibt eine benutzerdefinierte Fehlermeldung zurück, die im C#-Code abgefangen und behandelt werden kann.
Das obige ist der detaillierte Inhalt vonWie verhindert man doppelte Einträge in MySQL-Tabellen mithilfe von Triggern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!