Ich habe eine Tabelle mit einer URL und einer Zeichenfolge, die ihre Parameter darstellt. Das Problem ist, dass ich will, dass eine URL und ein Parameterstring die eindeutige Einschränkung für die Tabelle bilden - auch dürfen keine Einträge die gleiche URL UND Parameter-Zeichenfolge haben. Die Parameter-Zeichenfolge kann eine beliebige Länge haben (länger als 800 Bytes oder so, was die maximale Länge für einen MySql-Schlüssel ist, daher kann ich Unique (URL, Params) nicht verwenden, da es einen Fehler auslöst ...).Wie INSERT-Operation in MySql-Trigger abgebrochen werden?
Ich dachte über die Verwendung von Triggern, dies zu tun, aber wie kann ich eine Ausnahme auslösen/einen Fehler auslösen, wenn der Auslöser entdeckt, dass die Einfügung ist im Begriff, einen doppelten Eintrag einzufügen? Ich stelle mir vor, ich möchte eine MySqlException wie MySql mit doppelten Primärschlüssel usw. geworfen haben, so dass ich es in meinem C# -Code abfangen kann.
Ich habe zwei Stücke im Auslöser Ich brauche Hilfe mit: ... Abbrechen Wurf Ausnahme zu C# ... Wie ich eine Ausnahme usw. zu C# werfen? ... Erlaube einfügen ... - Wie erlaube ich einfach die Einfügung, wenn es keinen doppelten Eintrag gibt?
Heres der Trigger-Code:
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
von MySQL 5.5, möglicherweise früher, Sie Signale verwenden können, [siehe meine Antwort hier] [1] [1]: http://stackoverflow.com/questions/24/throw-error- in-mysql-trigger/7189396 # 7189396 – RuiDC