小编Clé*_*ine的帖子

在postgres上使用什么代替“ INSERT ... ON CONFLICT DO NOTHING”

我有以下查询,与postgres 9.5一起使用:

INSERT INTO knowledge_state 
(SELECT learnerid learner_id, lo_id FROM qb_lo_tag WHERE qb_id = NEW.qb_id)
ON CONFLICT DO NOTHING ;
Run Code Online (Sandbox Code Playgroud)

不幸的是,我不能在某些服务器上使用postgres 9.5,我需要将其转换为9.5之前的友好查询。我建立了以下查询,但对我来说似乎复杂得多,我认为可能有更简单的方法。

FOR rows IN SELECT lo_id FROM knowledge_state 
WHERE learner_id = learnerid 
AND lo_id IN (SELECT lo_id FROM qb_lo_tags WHERE qb_id = New.qb_id) LOOP

  INSERT INTO knowledge_state (lo_id, learner_id) SELECT rows.lo_id, learnerid 
WHERE NOT EXISTS (SELECT * FROM knowledge_state WHERE lo_id = rows.lo_id AND learner_id = learnerid);

END LOOP;
Run Code Online (Sandbox Code Playgroud)

我很想听听有关如何简化此查询的想法。

postgresql

6
推荐指数
1
解决办法
9447
查看次数

提取json对象的一部分时出现json解析错误

我正在尝试使用 node.js 将 json 对象插入到 postgres 数据库中名为 json 类型的数据的列中。

我从客户端(主干)收到的数据采用以下格式:

{id: someid, questions: [{some question data}, {some more question data}]}
Run Code Online (Sandbox Code Playgroud)

如果我插入整个数据(req.body),它工作正常。故事结局。

但是,就我而言,我只想插入问题数组(req.body.questions)。

但这是行不通的。当我解析 req.body.questions 时,我得到 false 返回(不是 json)。

但是,如果我手动将获得的数据插入到 postgres 中,它就会起作用。这是供参考的数据示例:

[ { completed: true,
        score: 1,
        answerList: [ '1' ],
        choicesNumber: 4,
        QuestionId: 6,
        startTime: '2016-01-19T22:09:47.090Z',
        clickNb: 1,
        endTime: '2016-01-19T22:09:51.491Z' },
      { completed: true,
        score: 1,
        answerList: [ '1' ],
        choicesNumber: 4,
        QuestionId: 5,
        startTime: '2016-01-19T22:09:52.209Z',
        clickNb: 1,
        endTime: '2016-01-19T22:09:53.713Z' }
    ]
Run Code Online (Sandbox Code Playgroud)

这是我收到的错误:

插入体验时出错 { [错误:json 类型的输入语法无效] 名称:'错误',长度:195,严重性:'错误',代码:'22P02',...

详细信息:'预期为“:”,但找到了“,”。', …

postgresql json node.js backbone.js

1
推荐指数
1
解决办法
2273
查看次数

标签 统计

postgresql ×2

backbone.js ×1

json ×1

node.js ×1