Обновление MySQL в нескольких таблицах ... триггер? каскад? - PullRequest
0 голосов
/ 28 июня 2011

У меня есть три таблицы, которые связаны. Категория содержит параметры, для которых пользователь вводит значения, упрощая следующее:

group
-----
id
name
active

option
------
id
group_id
name
active

user_option
-----------
id
opton_id
value
active

Мой вопрос: как лучше всего справляться с ситуациями, когда группа деактивирована? То, что я сделал в прошлом, это поиск опций идентификаторов, где group_id = идентификатор группы, которая деактивируется. Затем я беру список возвращенных идентификаторов и деактивирую user_option как ...

set active=0 where option_id in (list of ids)

Затем я обновляю опцию, затем я обновляю группу.

Мне интересно, есть ли способ сделать это с помощью триггера или каскада. Я никогда не использовал ни одного в MySQL и думал, что увижу, как лучше всего подойти к этой проблеме.

1 Ответ

0 голосов
/ 28 июня 2011

Добавление ON UPDATE CASCADE к внешнему ключу в столбце USER_OPTION.active должно быть всем необходимым для реализации желаемой функциональности согласно документации .Предполагая, что ограничение внешнего ключа уже установлено, используйте:

ALTER TABLE 
MODIFY active FOREIGN KEY fk_name (active) REFERENCES OPTION(active) ON UPDATE CASCADE
...