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

ГРЕШКА:в Postgres е намерена повече от една притежавана последователност

Актуализация: Тази грешка е коригирана в PostgreSQL v12 с комит 19781729f78 .
Останалата част от отговора е подходяща за по-стари версии.

serial колона има последователност, която е собственост на колоната и DEFAULT стойност, която получава стойността на нетната последователност.

Ако се опитате да промените тази колона в колона за самоличност, ще получите грешка, че вече има стойност по подразбиране за колоната.

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

Сега, когато се опитате да вмъкнете ред, PostgreSQL се опитва да намери и използва the последователност, притежавана от колоната, но има две, оттук и съобщението за грешка.

Бих казал, че това е грешка в PostgreSQL:по мое мнение трябваше или да пренасочи съществуващата последователност за колоната за идентичност, или да ви даде грешка, че вече има последователност, притежавана от колоната, и трябва да я изпуснете. Ще се опитам да поправя тази грешка .

Междувременно трябва ръчно да премахнете последователността, останала от serial колона. Изпълнете следната заявка:

SELECT d.objid::regclass
FROM pg_depend AS d
   JOIN pg_attribute AS a ON d.refobjid = a.attrelid AND
                             d.refobjsubid = a.attnum
WHERE d.classid = 'pg_class'::regclass
  AND d.refclassid = 'pg_class'::regclass
  AND d.deptype <> 'i'
  AND a.attname = 'patientid'
  AND d.refobjid = 'patient'::regclass;

Това трябва да ви даде името на последователността, останала след serial колона. Пуснете го и колоната за самоличност трябва да се държи както желаете.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. WhereRaw Laravel с променлива

  2. Postgres:Различен, но само за една колона

  3. Postgres Array Append &Array Length за „Array Push“

  4. Как да настроя разширение на Postgres?

  5. Текущ брой Общо с PostgresQL