pg support of duplicate key update

This commit is contained in:
xiaomlove
2026-04-25 03:22:38 +07:00
parent dc77ab7b40
commit 7d18a7f76a
14 changed files with 62 additions and 29 deletions
+1 -8
View File
@@ -5418,14 +5418,7 @@ function saveSetting(string $prefix, array $nameAndValue, string $autoload = 'ye
}
$data[] = sprintf("(%s, %s, %s, %s, '%s')", sqlesc("$prefix.$name"), sqlesc($value), sqlesc($datetimeNow), sqlesc($datetimeNow), $autoload);
}
$sql .= implode(",", $data);
if (\Nexus\Database\NexusDB::isMysql()) {
$sql .= " on duplicate key update value = values(value)";
} else if (\Nexus\Database\NexusDB::isPgsql()) {
$sql .= " on conflict (name) do update set value = EXCLUDED.value";
} else {
throw new \RuntimeException('Not supported database.');
}
$sql .= implode(",", $data) . " " . \Nexus\Database\NexusDB::upsertField(['name'], ['value']);
\Nexus\Database\NexusDB::statement($sql);
clear_setting_cache();
do_action("nexus_setting_update");