| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MySQL > Триггер на удаление |
| Автор: aliks 26.10.2009, 18:15 | ||||
Есть 2 связанные таблицы, в одной из таблиц хочу написать триггер, который перед удалением строки будет производить проверку, если в связанной таблице записи, есть ли на удаляемою запись ссылка. Если ссылка есть, то хочу чтобы удаление не производилось, а выдавалась какое либо предупреждение. Вот пример моего триггера.
Нечто подобное я делал в MSSQL следующим образом
Но вот как это реализовать в MySQL я не знаю Добавлено через 8 минут и 40 секунд Решение нашел при использовании связей, поставил в RESTRICT. А можно ли все таки решить это на триггере? |
| Автор: DimW 27.10.2009, 09:49 |
а предупреждения самого сервера бужет достаточно: обнаружина порожденная запись, невозможно удалить строку! (что то типа того...)? если достаточно, то натяните primary key и foreign key и будет вам счастье. |
| Автор: Akina 27.10.2009, 10:21 |
Смотря какая версия мускула. SIGNAL/RESIGNAL - только в шестой версии. |
| Автор: Zloxa 27.10.2009, 10:49 |
Откройте для себя foreign key. Приведенное решение на триггере не надежно, в многопользовательском режиме оно фактически не будет работать(если я правильно поинмаю что это оракля). |
| Автор: DimW 27.10.2009, 11:15 |
Zloxa, ты в форуме по мускулу |
| Автор: Zloxa 27.10.2009, 11:54 |
Но в качестве примера для иллюстрации задачи приведен код для оракла, который не корректен. |
| Автор: Zloxa 27.10.2009, 12:27 |
| Хотя, не, гоню, какой же это оракл? aliks, для какой платформы первый пример? |
| Автор: aliks 19.11.2009, 10:25 | ||
Для MySQL, мы в каком разделе? foreign key это конечно хорошо...а если мне надо сделать так...
|
| Автор: Zloxa 19.11.2009, 12:24 |
Это плохо если так надо, но если все таки надо, foreign key никоим образом не препятствует созданию триггеров. Просто, по меньшей мере, не целесообразно триггер наполнять функционалом, который реалзиует функционал FK, только делает это хуже. |
| Автор: aliks 19.11.2009, 13:16 |
| Хорошо, давайте предположим, что у меня таблица не связана с другой, одна единственная.... Так что получается, на триггере нельзя реализовать препятствие для удаления строки определенного значения??? Только что нарыл в инете по теме http://sqlinfo.ru/forum/viewtopic.php?id=946 |
| Автор: zav74 19.11.2009, 14:33 | ||
А почему плохо. Один раз я даже так сделал(только триггер должен срабатывать ВМЕСТО удаления). Вместо удаления иногда активизировал пустой триггер-таким образом запрещал удаление из любого инструмента. Но это было в другой СУБД, жаль если здесь нет такого инструмента. |
| Автор: aliks 19.11.2009, 18:06 |
В том то и дело что у других баз есть такой инструмент |