|
|
|
Вставка минимальное незанятого числа
|
|||
|---|---|---|---|
|
#18+
Имеется таблица Код: plsql 1. 2. 3. 4. 5. Имеется insert Код: plsql 1. Нужно, чтобы number автоматом формировался минимальным из незанятых. Попробовал эту задачу решить через последовательности Код: plsql 1. 2. 3. 4. 5. 6. Код: plsql 1. Добавил, удалил несколько записей и всё равно нумерация сохраняется. Можно эту задачу решить через последовательности? Или только через триггер, ХП ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2016, 17:52 |
|
||
|
Вставка минимальное незанятого числа
|
|||
|---|---|---|---|
|
#18+
т.е. нужно заполнить "дырки" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2016, 17:57 |
|
||
|
Вставка минимальное незанятого числа
|
|||
|---|---|---|---|
|
#18+
Только ХП с эксклюзивным локом на всю таблицу на время операции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2016, 19:35 |
|
||
|
Вставка минимальное незанятого числа
|
|||
|---|---|---|---|
|
#18+
sanringoт.е. нужно заполнить "дырки" допустимо и решаемо, если поставить нормальный PK с дырками первым полем с именем Id. Я так понимаю, при удалении записи мы можем постоянно при вставке получать номер "22" одинаковым? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2016, 19:47 |
|
||
|
Вставка минимальное незанятого числа
|
|||
|---|---|---|---|
|
#18+
Сформулирую по-другому. Имеем таблицу с заполненым полем (1,2,4,5...). Процедура должна выдать 3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2016, 20:52 |
|
||
|
Вставка минимальное незанятого числа
|
|||
|---|---|---|---|
|
#18+
sanringo, 1) alter table public.my_table alter column number type serial; и не париться :) 2) еще можно посмотреть на функцию generate_series ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2016, 22:35 |
|
||
|
Вставка минимальное незанятого числа
|
|||
|---|---|---|---|
|
#18+
sanringoСформулирую по-другому. спрошу по другому. После удаления записи с "3" следующая вставка будет опять с 3? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2016, 22:36 |
|
||
|
Вставка минимальное незанятого числа
|
|||
|---|---|---|---|
|
#18+
sanringoИмеется таблица Код: plsql 1. 2. 3. 4. 5. Имеется insert Код: plsql 1. Нужно, чтобы number автоматом формировался минимальным из незанятых. Попробовал эту задачу решить через последовательности Код: plsql 1. 2. 3. 4. 5. 6. Код: plsql 1. Добавил, удалил несколько записей и всё равно нумерация сохраняется. Можно эту задачу решить через последовательности? Или только через триггер, ХП 1)через последовательности не решается 2)от вас уже второе письмо с некорректной по сути задачей (т.е. из серии так делать никогда и никому не надо если им не хочется проблемы с базой иметь), из чего я предполагаю кривое ТЗ. 3)через триггер с ПОЛНОЙ блокировкой таблицы на конкурентную запись - решается но вставка будет ghm не быстрая особенно если таблица большая (так как для поиска дырок надо будет всю таблицу пересматривать). Возможно извратится и держать до кучи еще и таблицу дырок (и обновлять ее через before delete триггер) - тогда будет быстро но уже совсем сложно. -- Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2016, 01:53 |
|
||
|
Вставка минимальное незанятого числа
|
|||
|---|---|---|---|
|
#18+
Petro123sanringoСформулирую по-другому. спрошу по другому. После удаления записи с "3" следующая вставка будет опять с 3? Совершенно верно Вот, что у меня получилось Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Но есть подозрение, что на больших таблицах будет тормозить. Может есть вариант по-лучше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2016, 21:28 |
|
||
|
Вставка минимальное незанятого числа
|
|||
|---|---|---|---|
|
#18+
sanringoчто на больших таблицах будет тормозить их просто не делают с дырками. За всё надо платить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 08:36 |
|
||
|
Вставка минимальное незанятого числа
|
|||
|---|---|---|---|
|
#18+
sanringo, А, позвольте спросить, зачем это вообще надо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 10:57 |
|
||
|
Вставка минимальное незанятого числа
|
|||
|---|---|---|---|
|
#18+
Author the new one, У меня был случай, когда в биллинге нумерация инвойсов должна была быть непрерывной. Крайне неприятное требование. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 11:37 |
|
||
|
Вставка минимальное незанятого числа
|
|||
|---|---|---|---|
|
#18+
vyegorov, Да, но очень странно, когда получается, что офомляли 1000-ый инвойс и вдруг следующий оказался 47-ым. Что-то тут не то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 15:36 |
|
||
|
Вставка минимальное незанятого числа
|
|||
|---|---|---|---|
|
#18+
Author the new one, 1. Это не в рамках одного клиента, а всей клиентской базы 2. Если вам пришёл счет за номером 1000, а потом (через месяц) 1100, то какая вам разница, что 5 номеров пропущено и надо было бы номер 1095 присваивать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 16:38 |
|
||
|
Вставка минимальное незанятого числа
|
|||
|---|---|---|---|
|
#18+
Author the new oneДа, но очень странно, когда получается, что офомляли 1000-ый инвойс и вдруг следующий оказался 47-ым. Что-то тут не то. Дык эта... и чтобы такого вот не было, нас заставляли откатывать все счета после дырки, переставлять последовательность и генерить заново. Неприятно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 16:59 |
|
||
|
Вставка минимальное незанятого числа
|
|||
|---|---|---|---|
|
#18+
vyegorovAuthor the new oneДа, но очень странно, когда получается, что офомляли 1000-ый инвойс и вдруг следующий оказался 47-ым. Что-то тут не то. Дык эта... и чтобы такого вот не было, нас заставляли откатывать все счета после дырки, переставлять последовательность и генерить заново. Неприятно... То есть и во всех документах, накладных и т.п., что в электронном виде хранятся? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 17:22 |
|
||
|
Вставка минимальное незанятого числа
|
|||
|---|---|---|---|
|
#18+
vyegorov, Это что же, я, стало быть, закажу себе перчатки резиновые 50 шт, получу счет №9931, а потом окажется, что счет №9931 - это уже не перчатки, а фаллоимитаторы, и не 50 шт, а 4 тысячи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 17:49 |
|
||
|
Вставка минимальное незанятого числа
|
|||
|---|---|---|---|
|
#18+
Author the new one, Это не магазин, а провайдер, который выписывает счета. Нестыковки ищутся до отсылки счетов клиентам на стадии проверок. Если пропустили — то просто всем в тык. После того, как счёт доставлен (в магазине это сразу), то понятно что ничего никуда не двигается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2016, 19:31 |
|
||
|
Вставка минимальное незанятого числа
|
|||
|---|---|---|---|
|
#18+
vyegorovКрайне неприятное требование главное знать кто эти дырки проверяет)). А то ведь, и номера паспортов без дырок делать будут.)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2016, 10:26 |
|
||
|
Вставка минимальное незанятого числа
|
|||
|---|---|---|---|
|
#18+
vyegorov, Так, может быть, проще перенумеровать их один раз при отправке и запретить модификации после? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2016, 16:54 |
|
||
|
Вставка минимальное незанятого числа
|
|||
|---|---|---|---|
|
#18+
Author the new one, Вариантов и предложений было много, но все разбились о нежелание тратить усилия на исправления технического долга... Ну да это всё уже не моя забота :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2016, 17:24 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=94&tid=1997350]: |
0ms |
get settings: |
16ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
52ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
| others: | 219ms |
| total: | 380ms |

| 0 / 0 |
