Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
вопрос по serial
|
|||
|---|---|---|---|
|
#18+
Есть такой тип serial. Вроде как он предназначен для создания id. Удобно в isert default указал и он сам нумерует. Проблемный самый обыкновенный пример. создаём первые сто полей. Последний id = 101 удаляем эти сто полей. Первый id = 102. И т.д. как мне сделать так что бы значения были плотные. удалил пять значений из середины потом вставил 10 значений оно вставило с id удалённых пяти и пять новых. Для меня это критично. Пример реальной жизни что бы не городить лишнее поле человек вводит id товара. Товаров не много и хотелось бы id не больше сотни то есть двузначные. Причина - низкая квалификация рабочего + специфические условия труда.Только подошёл к изучению тригеров. Если поможете советом буду рад. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2008, 05:13 |
|
||
|
вопрос по serial
|
|||
|---|---|---|---|
|
#18+
sneer...serial тут не помощник. Его хорошо использовать для суррогатных ключей, а для непрерывной нумерации он не подходит. Поищите ответ на свой вопрос на форуме "Проектирование БД" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2008, 07:07 |
|
||
|
вопрос по serial
|
|||
|---|---|---|---|
|
#18+
ДБsneer...serial тут не помощник. тут скорее нужен ф-л поиска пропусков. обычно это просто что-то типа (не в точности, но примерно) Код: plaintext 1. 2. 3. 4. 5. забавно что вот такое Код: plaintext 1. 2. 3. 4. 5. ну и для пропусков с начала (тако же как для получения последнего) нужны еще и Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. , и придём к идее хранения таблички пропусков, пополняемой/прорежаемой триггерами. + (вероятно) счетчик(и) - в кач-ве внетранзакционной переменной(ых) для обмена данными (о резервировании) между конкурирующими транзакциями. Как-то так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2008, 11:08 |
|
||
|
вопрос по serial
|
|||
|---|---|---|---|
|
#18+
sneerПример реальной жизни что бы не городить лишнее поле человек вводит id товара. Товаров не много и хотелось бы id не больше сотни то есть двузначные. Причина - низкая квалификация рабочего + специфические условия труда. Херня это, а не пример реальной жизни. Что будет с низкоквалифицированным рабочим, когда он при специфических условиях труда введёт по привычке двузначный id товара, который уже удалили и заменили новым? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2008, 18:59 |
|
||
|
вопрос по serial
|
|||
|---|---|---|---|
|
#18+
Sad SpiritsneerПример реальной жизни что бы не городить лишнее поле человек вводит id товара. Товаров не много и хотелось бы id не больше сотни то есть двузначные. Причина - низкая квалификация рабочего + специфические условия труда. Херня это, а не пример реальной жизни. Что будет с низкоквалифицированным рабочим, когда он при специфических условиях труда введёт по привычке двузначный id товара, который уже удалили и заменили новым? Популярный товар(то есть номера которого он знает на наизусть) редко удаляется да и вообще специфика такова что лимит в 100 наименований будет превышен очень не скоро. По теме как сделать немного подумаю ещё как лучше и напишу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2008, 23:44 |
|
||
|
вопрос по serial
|
|||
|---|---|---|---|
|
#18+
assaДБsneer...serial тут не помощник. тут скорее нужен ф-л поиска пропусков. обычно это просто что-то типа (не в точности, но примерно) Код: plaintext 1. 2. 3. 4. 5. забавно что вот такое Код: plaintext 1. 2. 3. 4. 5. ну и для пропусков с начала (тако же как для получения последнего) нужны еще и Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. , и придём к идее хранения таблички пропусков, пополняемой/прорежаемой триггерами. + (вероятно) счетчик(и) - в кач-ве внетранзакционной переменной(ых) для обмена данными (о резервировании) между конкурирующими транзакциями. Как-то так. Я если чес не понял твоих запросов. Мог бы поподробнее объяснить. Я про запросы поиска пропусков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2008, 02:59 |
|
||
|
вопрос по serial
|
|||
|---|---|---|---|
|
#18+
LeXa NalBatнашлось Gapless Sequences for Primary Keys creating "a perfect sequence" column Да ну нафиг. Первая ссылка предлагает вообще не удалять данные. Не, надо как assa предлагает в общем виде. Только таблицу придется блокировать AccessExclusive, пока генерится id-шник. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2008, 13:27 |
|
||
|
вопрос по serial
|
|||
|---|---|---|---|
|
#18+
Тут путается два вопроса. Первый - суррогатный ключ. Используйте serial, и пусть хоть до миллиона дойдет. Суррогатный ключ по определению никогда не предъявляется пользователю. Пользователь его не видит, и не вводит значений, которые с ним сравниваются. Назовем это поле "ID". Второй - удобная идентификация товара персоналом. Назовем это поле "Код" (CODE). Это пользовательские данные о товаре, такие же как название. Генерите его любым удобным алгоритмом с обработкой дырок. Могу порекомендовать держать две отдельных таблички. Одна с последним максимальным выданным номером, другая - с перечнем свободных номеров (пополняется при удалении записей). При добавлении нового товара сперва искать в таблице свободных номеров, и брать оттуда, удаляя запись, если нет - увеличивать последний выданный номер во второй таблице и брать его. Разумеется, не забывать блокировать таблицу последнего выданного номера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2008, 15:27 |
|
||
|
вопрос по serial
|
|||
|---|---|---|---|
|
#18+
насчет херни это точно а как насчет НЕиспользования физического удаления ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2008, 18:09 |
|
||
|
вопрос по serial
|
|||
|---|---|---|---|
|
#18+
sherzod_насчет херни это точно а как насчет НЕ использования физического удаленияпо первой ссылке какая-то муть почти на эту тему. только там 2 таблички, одна, с номерами, вроде иммено что неудаляемая по части "НЕ использования физического удаления" - есть еще незакоммиченные транзакции. они тоже делают дырки в счетчиках. Если откатились после вызова сиквенса. Т.е. на каждой транзакции придется проверять состояние счетчика (что он равен максимальному значению в таблице +1) и (пытаться) откатывать сиквенс "вручную" (если он таки не равен - что не обязательно говорит об откаченных транзах, но, возможно, о незакоммиченных) - т.е. неизбежны проблемы (т.к. мы теряем транзакционную независимость сиквенса) . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2008, 18:39 |
|
||
|
вопрос по serial
|
|||
|---|---|---|---|
|
#18+
assa по части "НЕ использования физического удаления" - есть еще незакоммиченные транзакции. они тоже делают дырки в счетчиках.да, это можно решить заблаговременным резервированием номеров пачками, вместо использование счетчика под генерацию номеров. Таки с неудалением вроде-бы вырисовывается простенько и со вкусом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2008, 11:30 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=35725438&tid=2003766]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
| others: | 212ms |
| total: | 371ms |

| 0 / 0 |
