1
我以嵌套集的形式在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包含在事务中是否足够?我应该使用交易还是表锁定?
感谢