【发布时间】:2010-06-28 06:00:41
【问题描述】:
我在 mysql 中以嵌套集的形式存储分层数据。
myTable
id,
title,
lft,
rgt
我使用以下一系列sql语句插入一个新节点:
SELECT @myLeft := lft FROM myTable WHERE ID = $id;
UPDATE myTable SET rgt = rgt + 2 WHERE rgt > @myLeft;
UPDATE myTable SET lft = lft + 2 WHERE lft > @myLeft;
INSERT INTO myTable(title, lft, rgt) VALUES($title, @myLeft + 1, @myLeft + 2);
这可行,但如果同时添加(接近)大量节点,则可能会出现问题。
我想知道,确保没有数据损坏的最佳方法是什么(存储过程不是一个选项)。只需将此 sql 包含在事务中就足够了吗?我应该使用事务和表锁定吗?
谢谢
【问题讨论】:
标签: mysql transactions hierarchical-data nested-sets