Как прерваться, ВСТАВЛЯЮТ операцию в триггер MySql?

У меня есть таблица, содержащая 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
31
задан johnrl 29 March 2010 в 14:45
поделиться

1 ответ

Комментарии в документации mysql о триггерах предполагают, что в mysql нет такой возможности. Лучшее, что вы можете сделать, - это создать отдельную таблицу для ошибок триггера , как это предлагается на той же странице .

8
ответ дан 27 November 2019 в 21:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: