【发布时间】:2011-07-05 13:55:56
【问题描述】:
我有 MySQL 表结构:
CREATE TABLE IF NOT EXISTS `categories` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`parent_id` int(10) unsigned NOT NULL DEFAULT '0',
`name` varchar(255) NOT NULL DEFAULT '',
`is_working` tinyint(1) unsigned NOT NULL DEFAULT '1',
);
它保存具有id和parent_id关系的分层数据
我有 5 级深度树,例如:
CATEGORY LEVEL 1
SUBCAT LEVEL 2
SUBCAT LEVEL 3
SUBCAT LEVEL 4
SUBCAT LEVEL 5
我需要(问题):如果我为某个类别或子类别设置is_working = 0,则所有子类别的is_working 都设置为0。
【问题讨论】:
-
您需要使用触发器深入挖掘树以更新所有子记录,除非您希望在检索时动态执行此操作。
-
如果你可以改变你的桌子设计,封闭桌子可能是一个不错的选择。看看What is the most efficient/elegant way to parse a flat table into a tree?,还可以看看Bill Karwin'sModels for hierarchical data上的幻灯片。
-
我刚刚为another question创建了一个闭包表的简单示例。
标签: mysql hierarchical-data sql-update