|
Функция для присвоения уникального кода ордера
|
|||
---|---|---|---|
#18+
Всем привет, Написал небольшую функцию, для присвоения уникального кода ордера на основе кода пользователя, текущего дня и номера накладной за текущий день : Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37.
Она работает, но возник вопрос а есть ли вероятность ошибки из-за дублирования этого кода(в базе поле уникально) Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9.
Зависит ли это от настроек PostgreSQL, codeigniter ? PostgreSQL 9.4.10 , codeigniter 3.1.0(3.1.0, ENVIRONMENT = development ) 2) И нет ли в PostgreSQL более удобного для подобной задачи ? Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2017, 16:14 |
|
Функция для присвоения уникального кода ордера
|
|||
---|---|---|---|
#18+
mstdmstd, не вникал . обычно задачи такого рода решают созданием таблички достигнутых значений (по одной строке на задачу "о конкурентном ресурсе"), к которым (строкам) все конкуренты встают в очередь на уникъю. работа замедляется, но номера идут сплошняком без дырок. в порядке коммитов. в пж такие таблички (конкурентных ресурсов) источник проблем (ибо пухнут индексами) -- их надо периодически реиндексировать. и всячески избегать долгих транзакций с ними -- чтобы они приемлемо (авто)вакуумировались. если значений внутри задачи мало (мало ордеров внутри периода в вашем случае) -- можно просто преодолевать исключения на уникъю навариванием значения (без отдельной таблички достигнутых со строкой на каждый период). если дырки допустимы -- сиквенсы вам в помощь. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2017, 18:36 |
|
Функция для присвоения уникального кода ордера
|
|||
---|---|---|---|
#18+
С таблицей идея понятна С sequence - это https://www.postgresql.org/docs/9.5/static/sql-createsequence.html ? Как их прикрутить к задаче, поскольку мне нужно группировать по коду юзеру и дате. sequence Такое позволяет? В доке я не нашел такое делать... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2017, 11:02 |
|
|
start [/forum/topic.php?fid=53&fpage=79&tid=1996756]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
28ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
others: | 326ms |
total: | 432ms |
0 / 0 |