Я почти закончил сборку своих 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 запросов.
Что я испытываю, так это то, что операция перемещения выдает разные результаты каждый раз, когда я ее использую.то есть: иногда это работает отлично, в других случаях номера сортировки не обновляются должным образом.
Как будто база данных сводит на нет некоторые запросы, и довольно скоро целостность базы данных разрушена.
Я не уверен, что это потому, что слишком много запросов или какой-то другой фактор.Но мне очень трудно диагностировать.
Есть идеи, в чем может быть проблема?
Приветствия, Том