PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Синтаксична грешка в тестовия код UPSERT

Тъй като това е водещият резултат на Google за грешка:

ON CONFLICT DO UPDATE command cannot affect row a second time

Ще добавя, че може да е причинено от дублирани конфликтни стойности , напр.

INSERT INTO distributors (did, dname)
VALUES 
    (5, 'Gizmo Transglobal'), 
    (5, 'Associated Computing, Inc')
ON CONFLICT (did) DO UPDATE SET dname = EXCLUDED.dname;

В този случай се опитваме да вмъкнем две стойности с dim зададен на 5 . Като dim е индексът, той не може да има конфликт в самата заявка.

Срещнах тази грешка при внедряване на микроуслуга и обработка на заявки, като някои от тях имат дублиращи се записи.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Python unittest (използвайки SQLAlchemy) не записва/актуализира база данни?

  2. SQL Between клауза с колони с низове

  3. Отчитане на лятното часово време в Postgres, когато избирате планирани елементи

  4. Rails нулира ВСИЧКИ последователности на Postgres?

  5. Рефакториране на външния ключ към полета