Wie bricht man die INSERT-Operation in MySQL-Trigger ab?

Ich habe eine Tabelle mit einer URL und einer Zeichenfolge, die ihre Parameter darstellt. Das Problem ist, dass eine URL und eine Parameterzeichenfolge die eindeutige Einschränkung für die Tabelle sein sollen - auch wenn keine Einträge dieselbe URL und dieselbe Parameterzeichenfolge haben können. Die Parameterzeichenfolge kann beliebig lang sein (länger als 800 Byte oder so, was die maximale Länge für einen MySQL-Schlüssel ist, daher kann ich Unique (URL, Parameter) nicht verwenden, da es einen Fehler auslöst ...).

Ich habe darüber nachgedacht, Trigger zu verwenden, aber wie kann ich eine Ausnahme auslösen / einen Fehler auslösen, wenn der Trigger feststellt, dass die Einfügung im Begriff ist, einen doppelten Eintrag einzufügen? Ich stelle mir vor, ich möchte eine MySqlException wie MySql mit doppelten Primärschlüsseln usw. auslösen, damit ich sie in meinem C # -Code abfangen kann.

Ich habe zwei Teile im Auslöser, bei denen ich Hilfe benötigen muss: ... Ausnahme nach C # abbrechen ... Wie kann ich eine Ausnahme usw. nach C # werfen? ... Einfügen zulassen ... - Wie kann ich das Einfügen nur zulassen, wenn kein doppelter Eintrag vorhanden ist?

Hier ist der Triggercode:

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
   ... ABORT/throw exception to C# ...
ELSE
   ... Allow insert ...
END

Antworten auf die Frage(3)

Ihre Antwort auf die Frage