我几乎用拖放页面排序和层次编辑来构建我的cms。
这是我的数据库中的页面表。
CREATE TABLE `pages` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`metatitle` varchar(255) DEFAULT NULL,
`metadesc` text,
`metakw` varchar(255) DEFAULT NULL,
`create_time` datetime DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
`url` varchar(255) DEFAULT NULL,
`parent` int(11) DEFAULT NULL,
`active` tinyint(1) DEFAULT NULL,
`sort` int(11) DEFAULT NULL,
`nofollow` tinyint(1) DEFAULT NULL,
`deletable` tinyint(1) DEFAULT NULL,
`navshow` tinyint(1) DEFAULT NULL,
`type` enum('basic','dynamic','virtual') DEFAULT NULL COMMENT 'basic: only contains basic content\ndynamic: contains both dynamic and basic content\nvirtual: redirects to another page',
`virtual_redirect` int(11) DEFAULT NULL,
`route` varchar(255) DEFAULT NULL,
`dynamic_desc` varchar(255) DEFAULT NULL,
`content1` blob,
`content2` blob,
PRIMARY KEY (`id`),
UNIQUE KEY `url_UNIQUE` (`url`),
UNIQUE KEY `name_UNIQUE` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=latin1
从父字段可以看出,我正在使用邻接列表模型来创建我的页面层次。
说我有这个页面结构...
|-Page 1
| |-Page 3
| |-Page 2
| |-Page 4
| |-Page 5
|-Page 6
如果我将第3页移到某个级别,结构现在看起来就像这样......
|-Page 1
| |-Page 2
| |-Page 4
| |-Page 5
|-Page 3
|-Page 6
这是我的问题。
以上示例涉及相当多的查询(对于这样的小树)。我必须更改第2-6页的排序编号和第3页的父编号。这是7个查询。
我所遇到的是每次使用它时,移动操作会产生不同的结果。即:有时它完美地工作,其他时候排序数字不能正确更新。
就好像数据库在几个查询中出现问题,很快就会破坏数据库的一致性。
我不确定是否是因为查询太多或其他因素。但我发现诊断非常困难。
任何想法可能是什么问题?
干杯 汤姆