![]() |
|
Модераторы: skyboy |
![]()
|
|
| aliks |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 146 Регистрация: 17.12.2008 Репутация: нет Всего: 1 |
Есть 2 связанные таблицы, в одной из таблиц хочу написать триггер, который перед удалением строки будет производить проверку, если в связанной таблице записи, есть ли на удаляемою запись ссылка. Если ссылка есть, то хочу чтобы удаление не производилось, а выдавалась какое либо предупреждение. Вот пример моего триггера.
Нечто подобное я делал в MSSQL следующим образом
Но вот как это реализовать в MySQL я не знаю Добавлено через 8 минут и 40 секунд Решение нашел при использовании связей, поставил в RESTRICT. А можно ли все таки решить это на триггере? --------------------
Любимая кнопка - F1, Любимое спасибо - Плюс в репутацию |
||||
|
|||||
| DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 4 Всего: 44 |
||||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
Смотря какая версия мускула. SIGNAL/RESIGNAL - только в шестой версии. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 33 Всего: 161 |
Откройте для себя foreign key. Приведенное решение на триггере не надежно, в многопользовательском режиме оно фактически не будет работать(если я правильно поинмаю что это оракля). Это сообщение отредактировал(а) Zloxa - 27.10.2009, 10:49 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 4 Всего: 44 |
||||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 33 Всего: 161 |
Но в качестве примера для иллюстрации задачи приведен код для оракла, который не корректен. -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 33 Всего: 161 |
Хотя, не, гоню, какой же это оракл?
aliks, для какой платформы первый пример? -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| aliks |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 146 Регистрация: 17.12.2008 Репутация: нет Всего: 1 |
Для MySQL, мы в каком разделе? foreign key это конечно хорошо...а если мне надо сделать так...
--------------------
Любимая кнопка - F1, Любимое спасибо - Плюс в репутацию |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 33 Всего: 161 |
Это плохо если так надо, но если все таки надо, foreign key никоим образом не препятствует созданию триггеров. Просто, по меньшей мере, не целесообразно триггер наполнять функционалом, который реалзиует функционал FK, только делает это хуже. -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| aliks |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 146 Регистрация: 17.12.2008 Репутация: нет Всего: 1 |
Хорошо, давайте предположим, что у меня таблица не связана с другой, одна единственная....
Так что получается, на триггере нельзя реализовать препятствие для удаления строки определенного значения??? Только что нарыл в инете по теме http://sqlinfo.ru/forum/viewtopic.php?id=946 Это сообщение отредактировал(а) aliks - 19.11.2009, 13:52 --------------------
Любимая кнопка - F1, Любимое спасибо - Плюс в репутацию |
|||
|
||||
| zav74 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 19.7.2006 Репутация: нет Всего: нет |
А почему плохо. Один раз я даже так сделал(только триггер должен срабатывать ВМЕСТО удаления). Вместо удаления иногда активизировал пустой триггер-таким образом запрещал удаление из любого инструмента. Но это было в другой СУБД, жаль если здесь нет такого инструмента. |
|||
|
||||
| aliks |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 146 Регистрация: 17.12.2008 Репутация: нет Всего: 1 |
В том то и дело что у других баз есть такой инструмент --------------------
Любимая кнопка - F1, Любимое спасибо - Плюс в репутацию |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MySQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |