Upsert дублирует кишечные, Как я могу предотвратить это? - PullRequest
0 голосов
/ 12 июня 2018

Я пытаюсь вставить результат запроса из комбинации разных таблиц в центральную таблицу для нового модуля приложения.

models.sequelize.query(
    `
      SELECT...FROM...WHERE...
  `,
    {
      type: models.sequelize.QueryTypes.SELECT
    }
  )        
.then(function(results) {
          _.each(results, function (result) {
              promises.push(models.tableName.upsert(
              {
                id: result.id,
                poisitionId: result.positionId,
                column3: result.column3,
                column4: result.column4,
                column5: result.column5,
                column6: result.column6,
                column7: result.column7,
                column8: result.column8,
                column9: result.column9
              }, {
                conflict: {
                  target: 'id'
                }
              }

Насколько я понимаю, проблема в том, что я не правильнореализовал конфликтную часть кода.

Мне бы хотелось, чтобы функция вставляла только новые строки данных, которые она извлекает из запроса из других таблиц.В противном случае он должен обновлять только строки данных, если были внесены какие-либо изменения, используя positionId в качестве идентификатора цели конфликта.

1 Ответ

0 голосов
/ 22 июня 2018

Кажется, решение было добавить уникальное ограничение в базе данных к той конкретной таблице, к которой я добавлял файл.

Я использую pgAdmin, поэтому было очень легко просто добавить уникальное ограничение.

...