У меня есть таблица, содержащая URL и строку, представляющую ее параметры. Проблема, я хочу, чтобы URL и parameterstring были ограничением на уникальность данных для таблицы - иначе, никакие записи не могут иметь тот же URL И строку параметров. Строка параметров может иметь произвольную длину (приблизительно дольше, чем 800 байтов, который является макс. длиной для ключа MySql, таким образом, я не могу использовать Уникальный (URL, параметрические усилители), так как это бросает ошибку...).
Я думал об использовании триггеров делать это, но как я выдаю исключение ошибка, если триггер обнаруживает, что вставка собирается вставить дублирующуюся запись? Я предполагаю, что хотел бы бросить 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
Комментарии в документации mysql о триггерах предполагают, что в mysql нет такой возможности. Лучшее, что вы можете сделать, - это создать отдельную таблицу для ошибок триггера , как это предлагается на той же странице .