Ale*_*dko 7 sql postgresql sql-update pg-promise
我有下表:
CREATE TABLE IF NOT EXISTS categories
(
id SERIAL PRIMARY KEY,
title CHARACTER VARYING(100) NOT NULL,
description CHARACTER VARYING(200) NULL,
category_type CHARACTER VARYING(100) NOT NULL
);
Run Code Online (Sandbox Code Playgroud)
我正在使用pg-promise,并且我想提供可选的列更新:
categories.update = function (categoryTitle, toUpdateCategory) {
return this.db.oneOrNone(sql.update, [
categoryTitle,
toUpdateCategory.title, toUpdateCategory.category_type, toUpdateCategory.description,
])
}
Run Code Online (Sandbox Code Playgroud)
categoryName- 是必须的toUpdateCategory.title- 是必须的toUpdateCategory.category_type- 是可选的(可以传递或未定义)toUpdateCategory.description- 是可选的(可以传递或未定义)我想构建UPDATE查询以仅更新提供的列:
UPDATE categories
SET title=$2,
// ... SET category_type=$3 if $3 is no NULL otherwise keep old category_type value
// ... SET description=$4 if $4 is no NULL otherwise keep old description value
WHERE title = $1
RETURNING *;
Run Code Online (Sandbox Code Playgroud)
如何在 Postgres 中实现此可选列更新?
您可以coalesce在旧值和新值之间:
UPDATE categories
SET title=$2,
category_type = COALESCE($3, category_type),
description = COALESCE($4, description) -- etc...
WHERE title = $1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4444 次 |
| 最近记录: |