多表中的MySQL更新...触发?级联?

时间:2011-06-28 14:38:10

标签: mysql sql triggers sql-update

我有三个关联的表。类别包含用户输入值的选项,简化如下...

group
-----
id
name
active

option
------
id
group_id
name
active

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

我的问题是处理群组停用的情况的最佳方法是什么。我过去所做的是查找选项ID,其中group_id =正在停用的组ID。然后我获取返回的id的列表并停用user_option,如...

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

然后我更新选项,然后我更新组。

我很感兴趣是否有办法用触发器或级联来做这种事情。我从未在MySQL中使用过,并且认为我会看到解决这个问题的最佳方法是什么。

1 个答案:

答案 0 :(得分:0)

ON UPDATE CASCADE添加到USER_OPTION.active列上的外键应该是实现所需功能所需的全部内容per the documentation。假设已经存在外键约束,请使用:

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