Как сделать без max + 1

A3
Дата: 09.09.2005 10:31:32
Добрый день!

Хочу выйти из ситуации не используя max+1, но пока не представляю как. Есть некие товары, есть их справочник, ключ - ID. На каждый приход надо генерить новую запись в справочник, у которой 2 ключа: сам ID и номер партии. Так вот не знаю, как мне каждый раз увеличивать номер партии. Товары могут быть новые, на каждый генератор не повесишь. Как быть?

Заранее спасибо.
Kull Damned
Дата: 09.09.2005 10:36:41
Не понял, у тебя для разных товаров начинаются новые партии??? Я думал, что попартионный учет - это несколько другое.
Вообще лучше конечно вести справочник партий со своим генератором.
Ну а так можешь вести таблицу счетчиков для товаров - блокировать запись перед изменением в принципе можно...

Posted via ActualForum NNTP Server 1.3

A3
Дата: 09.09.2005 10:48:19
Kull Damned
Не понял, у тебя для разных товаров начинаются новые партии??? Я думал, что попартионный учет - это несколько другое.
Вообще лучше конечно вести справочник партий со своим генератором.
Ну а так можешь вести таблицу счетчиков для товаров - блокировать запись перед изменением в принципе можно...
Posted via ActualForum NNTP Server 1.3

Ну если в первой поставке был только товар с ID1, то должна сгенериться запись ID1.0001. Во второй поставке были товары ID1 и ID2. Должны сгенериться записи ID1.0002 и ID2.0001.
Т.е. без блокировок никак?
Kull Damned
Дата: 09.09.2005 11:00:28
Т.е. без блокировок никак?
Угу, можно счетчики вмонтировать прямо в справочник продукции. Тогда можно блокировать запись из справочника продукции на изменение, а для select'а все должно работать пучком, блокировать сразу с update'ом - если он проходит значит можно работать, если даст отлуп - значит кто-то создает новую партию. Иначе будут дырки в партиях, если дырки не смущают - то вперед делать сначала инкремент с блокировкой, коммит и редактирование партии в нормальном режиме. Может кто чего получше посоветует?

Posted via ActualForum NNTP Server 1.3

Лентяй
Дата: 09.09.2005 11:23:30
A3

Ну если в первой поставке был только товар с ID1, то должна сгенериться запись ID1.0001. Во второй поставке были товары ID1 и ID2. Должны сгенериться записи ID1.0002 и ID2.0001.
Т.е. без блокировок никак?

Зачем последовательная нумерация партий? Если в образуется новая партия ее номер должен быть просто уникальным. И получить его можно хоть из отдельно заведенного генератора, хоть из генератора для справочника товаров...
A3
Дата: 09.09.2005 11:27:31
Лентяй
A3

Ну если в первой поставке был только товар с ID1, то должна сгенериться запись ID1.0001. Во второй поставке были товары ID1 и ID2. Должны сгенериться записи ID1.0002 и ID2.0001.
Т.е. без блокировок никак?

Зачем последовательная нумерация партий? Если в образуется новая партия ее номер должен быть просто уникальным. И получить его можно хоть из отдельно заведенного генератора, хоть из генератора для справочника товаров...

Мне казалось, что отдельно заведенный генератор - как-то нерационально, что ли. Хотя, видимо, так и поступлю... А что имеется в виду под генератором для справочника товаров? Т.е. это не отдельный генератор?
Kull Damned
Дата: 09.09.2005 11:31:59
Ну если в первой поставке был только товар с ID1, то должна сгенериться запись ID1.0001. Во второй поставке были товары ID1 и ID2. Должны сгенериться записи ID1.0002 и ID2.0001.
Кстати, я думал, что при попартионном учете нумерация должна быть примерно следующая:
Для первой партии:
ID1.0001
ID3.0001

Для второй партии:
ID1.0002
ID2.0002
ID3.0002

И т.д. Тогда сразу видно, к какой партии относится товар... Или я гоню? :)
A3
Дата: 09.09.2005 11:38:07
Kull Damned
Ну если в первой поставке был только товар с ID1, то должна сгенериться запись ID1.0001. Во второй поставке были товары ID1 и ID2. Должны сгенериться записи ID1.0002 и ID2.0001.
Кстати, я думал, что при попартионном учете нумерация должна быть примерно следующая:
Для первой партии:
ID1.0001
ID3.0001

Для второй партии:
ID1.0002
ID2.0002
ID3.0002

И т.д. Тогда сразу видно, к какой партии относится товар... Или я гоню? :)

Скорее гонишь, потому что в одном документе может быть один и тот же товар, к примеру, по разной цене, с разными серийными номерами и т.д...
Лентяй
Дата: 09.09.2005 11:39:10
A3

Мне казалось, что отдельно заведенный генератор - как-то нерационально, что ли. Хотя, видимо, так и поступлю... А что имеется в виду под генератором для справочника товаров? Т.е. это не отдельный генератор?

Да в принципе можно завести один генератор и получать из него значения для всех таблиц. Диапазон значений довольно таки велик. Скажем если дергать генератор раз в секунду, то максимального значения он достигнет более чем через 100 лет...
Kull Damned
Дата: 09.09.2005 11:45:11
Скорее гонишь, потому что в одном документе может быть один и тот же товар, к примеру, по разной цене, с разными серийными номерами и т.д...
Ну и в чем проблема?

Posted via ActualForum NNTP Server 1.3