Задавайте вопросы, мы ответим
Вы не зашли.
Всем доброе время суток, мне нужно создать триггер, который будет проверять на наличие дубликата. Щас попробую разъяснить.
Допустим есть таблица user в нём
- Id
- Name
- Surname
есть такие данные.
-1
-Вася
-Пупкин
-2
-Максим
-Зернов
-3
-Алла
-Пугачёва
Когда вставляем новую запись например с ID - 2, нужно что бы триггер сравнил New.Id с уже имеющимися айдишниками и если такой есть, вызывал ошибку, такое можно сделать?
Неактивен
Гораздо проще сделать уникальный индекс по ID, тогда такая проверка будет
производиться автоматически.
Неактивен
К сожалению мне нужно научится делать это через триггеры) Но сам не смог найти ничего похожего в интернете... ( 4 день мучаюсь над этим вопросом)
Неактивен
Разобрался как сделать... но теперь хочу, что бы выдавало ошибку... Например
IF @a > 0 THEN
ошибка
END IF;
Как это сделать? т.к. у меня такие проверки не только на Insert, но и на Update и Delete
Отредактированно krite (25.01.2011 04:14:25)
Неактивен
В MySQL 5.5 для этого можно использовать SIGNAL.
В 5.1 и 5.0 хорошего способа, к сожалению, нет. Можно использовать всяческие
костылики (например, ошибку отсутствия таблицы):
SELECT 1 FROM ERROR_DUPLICATE_KEY;
Обычно я предлагаю в качестве ошибки вставить строку и сгенерировать duplicate
key, но у Вас странное ограничение на неиспользование уникальных индексов
Неактивен
paulus написал:
В MySQL 5.5 для этого можно использовать SIGNAL.
В 5.1 и 5.0 хорошего способа, к сожалению, нет. Можно использовать всяческие
костылики (например, ошибку отсутствия таблицы):
SELECT 1 FROM ERROR_DUPLICATE_KEY;
Обычно я предлагаю в качестве ошибки вставить строку и сгенерировать duplicate
key, но у Вас странное ограничение на неиспользование уникальных индексов
Большое спасибо за помощь) ну вот такую вот поставили задачу ) просто мне нужно не только такую проверку делать на Insert или Update но и на Delete, а там нужно сравнивать с другой таблицей ) но к счастью я разобрался с вашей помощью) Спасибо ещё раз)
Неактивен