У меня есть таблица, содержащая URL-адрес и строку, представляющую его параметры. Проблема в том, что я хочу, чтобы URL и строка параметров были уникальным ограничением для таблицы - иначе записи не могут иметь одинаковую строку URL-адреса И параметра. Строка параметра может иметь произвольную длину (более 800 байт или около того, что является максимальной длиной ключа MySql, поэтому я не могу использовать Unique (url, params), поскольку он выдает ошибку ...).
Я думал об использовании триггеров для этого, но как вывести исключение / вызвать ошибку, если триггер обнаруживает, что вставка собирается вставить повторяющуюся запись? Я предполагаю, что хотел бы, чтобы MySqlException выдавал, как MySql, с дублированными первичными ключами и т. Д., Чтобы я мог перехватить его в своем коде C #.
У меня есть две части в триггере, с которыми мне нужно получить помощь:
... Прервать выбрасывание исключения в C # ... Как мне вывести исключение и т.д. в C #?
... Разрешить вставку ... - как разрешить вставку, если нет повторяющейся записи?
Вот код триггера:
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