我想知道在插入时 dibi 的最佳做法是什么,如果存在则更新特定行。
编辑,截断我的帖子以获得更好的可读性:发现一个错误,它不是ON DUPLICATE KEY UPDATE SET ..
但是 ON DUPLICATE KEY UPDATE ..
,现在运行,但仍然没有更新值!?
dibi::query("INSERT INTO table %v", $qdata, 'ON DUPLICATE KEY UPDATE %a', $qdata);
已解决:上层解决方案有效,只是 UPDATE SET 问题。
为了获得更好的性能: 当插入像 blob 这样的大量数据时,这种方法不是最好的,因为查询字符串会得到双倍的长度。更好地使用引用更新方法,例如
INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)
ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);
你只参考values
插入语句的地方,因为它们已经加载。也许有人知道如何在 dibi 中做到这一点,我还没有考虑过解决方案,因为我只在内部系统上保存了一些字节。
最大限度