powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Триггер не работает
6 сообщений из 6, страница 1 из 1
Триггер не работает
    #39001487
nadi@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.

У меня есть таблица с иерархией категорий.
Есть поле nhaschildren - отвечает за то есть ли потомки у категории.
поле pid - отвечает за то есть ли у категории родитель.

Хочу создать триггер, который проверял бы "есть ли у категории родитель" и если есть, обновлял родителя nhaschildren =1
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
CREATE 
TRIGGER rm.trigger1
	BEFORE INSERT
	ON rm.catalog
	FOR EACH ROW
BEGIN
  if new.pid<>0 then
  
    update `catalog` set `catalog`.`nhaschildren`=1 where `catalog`.`id`=new.pid;

  end if;

END



получаю:
can't update table in stored function/trigger

Можно ли как-то обойти ограничение мускула на запрет редактирования таблицы триггера?
...
Рейтинг: 0 / 0
Триггер не работает
    #39001496
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вынесите логику вставки в таблицу в процедуру. И триггер станет тупо не нужен.
...
Рейтинг: 0 / 0
Триггер не работает
    #39005934
nadi@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

С базой работают люди через аксес и веб. Надо переделывать в нескольких местах. Легче выходит - тригер
...
Рейтинг: 0 / 0
Триггер не работает
    #39005942
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nadi@, тогда нормальных решений нет. Из хреноватых -например, в триггере сохранять куда-нибудь ид изменённых записей, и раз в секунду/минуту/час обрабатывать их отдельной процедурой.
...
Рейтинг: 0 / 0
Триггер не работает
    #39005992
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nadi@,

какая версия MySQL у вас, на всякий случай...
может что-то я недопонимаю, но вам UPDATE незачем....
почему бы не проверить существование Select_ом

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
FOR EACH ROW BEGIN
.......

@xyz:=0;
SELECT ... into @xyz
if @xyz<>0 then
  SET NEW.`nhaschildren`=1;
end if;

END;
...
Рейтинг: 0 / 0
Триггер не работает
    #39006127
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov, речь о добавлении первой субкатегории. Перед этим у категории было отмечено "субкатегорий нет", нужно исправить на "есть" одновременно с добавлением
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Триггер не работает
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]