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

Създаване на Django обект и Postgres последователности

всичко работи добре. create() на django няма нищо общо с директното създаване на последователност. накратко:

  • postgresql auto incrementing('serial' type) е просто пряк път на 'create sequence + create integerfield with a value value as default'
  • първичният ключ за автоматично поле на django (idinteger, ако не е указано друго от вас) просто създава серийно поле
  • когато посочите идентификатора ръчно, postgres вмъква стойността в базата данни. когато посочите стойност, тя пропуска параметъра „по подразбиране“, което е правилно поведение.

така че, ако искате вашите вмъквания да увеличават последователността по начин по ваш избор, трябва ръчно да промените стойността на последователността, като използвате SELECT setval('sequence_name', int_value); в противен случай го оставете null и той ще се увеличи автоматично - изберете текущата стойност и го увеличете +1 (ако не е указано друго в дефиницията на последователността).

друга идея е да създадете обекта и след това да актуализирате идентификатора (разбира се, той вече не може да се използва) и накрая да зададете стойността на последователността на максималния идентификатор.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вмъкнете двоичен голям обект (BLOB) в PostgreSQL, като използвате libpq от отдалечена машина

  2. AFTER INSERT тригер в отделна транзакция?

  3. поддържа ли node-postgres множество набори от резултати

  4. липсва запис на клауза FROM за таблица Grupo cakephp

  5. Заявка с помощта на две стойности на колони за създаване на диапазон