PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Sequelize upsert() nigdy nie aktualizuje i tylko wstawia

W twoim przykładzie upsert() nie podajesz id wejścia do metody upsert. Oznacza to, że sekwencja nie może pasować do id do wiersza (ponieważ id jest niezdefiniowany) i dlatego wstawia nowy wiersz.

Nawet jeśli używasz innego klucza podstawowego, zawsze musi on być właściwością, aby pasował, ponieważ sequelize używa klucza podstawowego do wyszukiwania istniejącego wiersza.

createOrUpdateTransaction: {
    type: Transaction,
    args: {
        // Omitted code...
    },
    resolve: (root, args) => {
        return db.models.transaction.upsert({
            // The id property must be defined in the args object for 
            // it to match to an existing row. If args.id is undefined 
            // it will insert a new row.
            id: args.id, 
            time: new Date().toString(),
            payerAccountNumber: args.payerAccountNumber,
            recipientAccountNumber: args.recipientAccountNumber,
            amount: args.amount,
            currency: args.currency,
            paymentMethod: args.paymentMethod,
            cardNumber: args.cardNumber,
            cardName: args.cardName,
            cardNetwork: args.cardNetwork,
            // Omitted fields ...
        })
    }
}



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Powolne zapytanie postgres podczas dołączania do dużych stołów

  2. Postgres wyzwala kwotę czeku przed usunięciem

  3. Transakcje nie działają dla mojej bazy danych MySQL

  4. Łączenie się z bazą danych PostgreSQL przez tunelowanie SSH w Pythonie

  5. Jak napisać procedurę składowaną postgres, która niczego nie zwraca?