|
|
|
| Здравствуйте !
Можно ли как-нибудь отменить удаление
записи в триггере BEFORE DELETE ? (MySQL5) | |
|
|
|
|
|
|
|
для: win-ni
(16.01.2009 в 17:47)
| | а в чём проблема?
в триггере ставите условие IF ничего не делать ELSE удалить строку END IF | |
|
|
|
|
|
|
|
для: 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
(17.01.2009 в 15:03)
| | Вроде бы, удалось найти решение траблы.
http://forum.dklab.ru/viewtopic.php?p=165408 | |
|
|
|
|
|
|
|
для: Win-ni
(22.01.2009 в 01:49)
| | А вы на какой версии пробовали? Что-то у меня в 5.0 подобное решение не работает... | |
|
|
|