是否有可能通过自动更新上下文敏感关系来复制特定条目?
给出表格' table1'像:
我的目标是在必要时更新parentId时复制categoryId 42的所有条目:
id是一个自动递增的列,parentId用于标识条目之间的关系。
目前我一个接一个地插入它们,选择旧数据并在PHP中管理parentId的逻辑。
//Thats simplified what I do ($conn is a Zend_Db_Adapter_Abstract)
$rows = $conn->fetchAll("SELECT * FROM table1 WHERE categoryId = 42 ORDER BY parentId ASC");
$newIds = [];
foreach($rows as $row){
if(array_key_exists($row['parentId'],$newIds))
$row['parentId'] = $newIds[$row['parentId']];
else
$row['parentId'] = null;
$conn->query("INSERT INTO table1 (parentId,info,categoryId) VALUES (?,?,?)",[$row['parentId'],$row['info'],$row['categoryId']]);
$newId = $conn->lastInsertId('table1');
$newIds[$row['id']] = $newId;
}
我坚持这个,因为我需要新元素的lastInsertedId为下一个元素设置新的parentId。 但我觉得这很慢(相对于包含逻辑的单个查询)。
是否有可能为查询提供某种增量元素敏感逻辑?或者您对如何加以解决有任何建议吗?
任何帮助表示赞赏! :)
答案 0 :(得分:0)
您没有显示任何代码。我猜你使用mysqli_insert_id()来获取最后插入的ID。也许你可以用MAX(ID)+1做点什么。
类似的东西:
INSERT INTO table1
SELECT MAX(ID)+1,
info,
categoryId
FROM
table1
WHERE .............. -- the conditions to retreive the parent