是否有可能通过自动更新上下文敏感关系来复制特定条目?
给定一个表“table1”,例如:
我的目标是复制所有类别 ID 为 42 的条目,同时在必要时更新 ParentId:
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。 但我发现这非常慢(相对于包含逻辑的单个查询)。
是否有可能为查询提供某种增量元素敏感逻辑?或者您对如何固定它有什么建议吗?
任何帮助表示赞赏! :)
最佳答案
您没有显示任何代码。我猜你使用 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
关于php - MySql 在 PHP 中自动更新上下文敏感关系的重复条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45732903/