Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: триггер BEFORE DELETE: можно ли отменить удаление записи?
 
 автор: win-ni   (16.01.2009 в 17:47)   письмо автору
 
 

Здравствуйте !

Можно ли как-нибудь отменить удаление
записи в триггере BEFORE DELETE ? (MySQL5)

  Ответить  
 
 автор: ronin80   (16.01.2009 в 21:27)   письмо автору
 
   для: win-ni   (16.01.2009 в 17:47)
 

а в чём проблема?

в триггере ставите условие IF ничего не делать ELSE удалить строку END IF

  Ответить  
 
 автор: Win-ni   (17.01.2009 в 15:03)   письмо автору
 
   для: ronin80   (16.01.2009 в 21:27)
 

По-моему Ваше решение подходит для хранимой процедуры, но не для триггера.
Я пробовал "пустой" триггер в виде:
-----
create trigger delkat before delete
on kategorii for each row
begin
end
----
Он никак не влияет на удаление записей (естественно).

В InterBase (Delphi7) можно создавать собственные исключения, например:
CREATE EXCEPTION "NO_DEL_KAT"
'Нельзя удалять - есть лекарства этой категории';

и затем использовать их в триггерах, например:

CREATE TRIGGER "BEFORE_DELETE_KAT" FOR "KATEGORII"
ACTIVE BEFORE DELETE POSITION 0
AS
DECLARE VARIABLE lek_count INTEGER ;
BEGIN
SELECT count(lek_id) from LEK_LIST
WHERE LEK_LIST.ID_KATEGOR = KATEGORII.ID_KATEGOR
INTO :lek_count ;
IF (:lek_count > 0) THEN EXCEPTION no_del_kat ;
END
^
Это то, что надо, но в MySQL5 вроде бы нет самодельных
исключений. На формуме dklab посоветовали создавать
искуственно ошибочную ситуацию. Сейчас пробую это
конкретизировать.

  Ответить  
 
 автор: Win-ni   (22.01.2009 в 01:49)   письмо автору
 
   для: Win-ni   (17.01.2009 в 15:03)
 

Вроде бы, удалось найти решение траблы.

http://forum.dklab.ru/viewtopic.php?p=165408

  Ответить  
 
 автор: denvor   (22.05.2009 в 15:23)   письмо автору
 
   для: Win-ni   (22.01.2009 в 01:49)
 

А вы на какой версии пробовали? Что-то у меня в 5.0 подобное решение не работает...

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования