【发布时间】:2019-12-17 01:15:18
【问题描述】:
我正在开发一个时钟程序,但我在处理这个查询时遇到了问题:
INSERT INTO users(time_in) VALUES($2) WHERE username = $1
表:
CREATE TABLE users (
id SERIAL PRIMARY KEY NOT NULL,
username VARCHAR(50) NOT NULL,
password VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
time_json VARCHAR,
time_in VARCHAR
);
这是我得到的错误:
error: syntax error at or near "time_in"
at Connection.parseE (\...\node_modules\pg\lib\connection.js:606:11)
at Connection.parseMessage (\...\node_modules\pg\lib\connection.js:403:19)
at TLSSocket.<anonymous> (\...\node_modules\pg\lib\connection.js:123:22)
at TLSSocket.emit (events.js:210:5)
at addChunk (_stream_readable.js:308:12)
at readableAddChunk (_stream_readable.js:289:11)
at TLSSocket.Readable.push (_stream_readable.js:223:10)
at TLSWrap.onStreamRead (internal/stream_base_commons.js:182:23) {
name: 'error',
length: 95,
severity: 'ERROR',
code: '42601',
detail: undefined,
hint: undefined,
position: '8',
internalPosition: undefined,
internalQuery: undefined,
where: undefined,
schema: undefined,
table: undefined,
column: undefined,
dataType: undefined,
constraint: undefined,
file: 'scan.l',
line: '1134',
routine: 'scanner_yyerror'}
我正在处理的函数的代码:
function postTimeIn(user, callback) {
const timeIn = getTime();
params = [user, timeIn];
const sql = 'INSERT INTO users(time_in) VALUES($2) WHERE username = $1';
pool.query(sql, params, function (err, result) { ...
【问题讨论】:
-
这在 Postgres 中不是一个有效的语法:
INSERT INTO ... WHERE-- 你是在做一个 upsert 吗?WHERE子句对 upsert 有效,但这不是你的做法 -
在
insert query,为什么需要where? -
我认为这不是有效的语法,但我不确定如何将值插入到给定用户的 time_in 列中
-
您是否想改用
UPDATE?
标签: sql node.js postgresql sql-update sql-insert