powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Нужно найти несуществующую циферку! :)
12 сообщений из 12, страница 1 из 1
Нужно найти несуществующую циферку! :)
    #32294191
Владъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос наверное простой, и решаемый одним оператором, но мне найти не удалось.
Имеется таблица, в которой есть поле с уникальными целыми значениями. При добавлении новой записи я нахожу максимальное существующее значение этого ключа в таблице, прибавляю единицу и присваиваю к новой записи. Но бывает, что приходится удалять записи из середины таблицы, и при этом значения уникальных ключей становятся незадействованными. Хотелось бы их задействовать, но не знаю как. Т.е. например было:

1 Колбаса
2 Картошка
3 Хлеб
4 Лимон

после удаления Картошки получаем число 2 незадействованным, т.е.

1 Колбаса
3 Хлеб
4 Лимон

Каким образом отловить эту двойку? Спасибо.
...
Рейтинг: 0 / 0
Нужно найти несуществующую циферку! :)
    #32294235
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никаким образом этого нельзя делать в многопользовательском приложении. Если оно однопользовательское - писать в триггере цикл и перебирать все номера от нуля до первой цифры, по которой нет записи.
...
Рейтинг: 0 / 0
Нужно найти несуществующую циферку! :)
    #32294241
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, ещё можно свободные номера после удаления в таблицу складывать отдельную и оттуда выбирать их. Если таблица пустая - тогда генерить номер обычным способом, иначе брать из таблицы и запись стирать.
...
Рейтинг: 0 / 0
Нужно найти несуществующую циферку! :)
    #32294250
Roman Ignatiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Угу. Только делать это с блокировкой таблиц транзакцией, иначе - будут конфликты. Другой вопрос - зачем?! Генераторы не на пустом месте придумали, они именно для того, чтобы не было подобных извращений.
...
Рейтинг: 0 / 0
Нужно найти несуществующую циферку! :)
    #32294283
1man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если твои числа - id записи - лучше оставь ее в покое, а для "красивой" нумерации (видимо, для представления в гриде? для глаз начальства, юзера и т.п.) используй специальное поле. На форуме этот вопрос обсуждался недавно, поищи.
...
Рейтинг: 0 / 0
Нужно найти несуществующую циферку! :)
    #32294313
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот моя лекция на тему суррогатных ключей на mysql\r
\r
Словарь:\r
\r
моська - mysql\r
\r
read\r
\r
поиск по форуму со словом " суррогатный " показывает 85 (теперь 86) тем\r
\r
пора писать краткий фак по sql вобще
...
Рейтинг: 0 / 0
Нужно найти несуществующую циферку! :)
    #32294361
Владъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А, ещё можно свободные номера после удаления в таблицу складывать отдельную и оттуда выбирать их.

Именно так и делал раньше.

Я вообще то думал, что все проще можно сделать. Ну нет, так нет. Видимо вообще откажусь от этой дурацкой затеи - заделывать дыры.

Всем спасибо.
...
Рейтинг: 0 / 0
Нужно найти несуществующую циферку! :)
    #32294750
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владъ
и откажись еще от одной затеи....
генерировать новый id на основе существующего.... это рещается при помощи ГЕНЕРАТОРОВ И ТОЛЬКО ИХ
...
Рейтинг: 0 / 0
Нужно найти несуществующую циферку! :)
    #32297917
Фотография MaestroEv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для ID записи, конечно, нельзя этим заниматься, а для упорядочивания (счетов, товаров) .... Утром ... (раз в день) если временная таблица с номерами пустая, генеришь с поиском пустые номера в неё...и потом берешь из неё. А если в течении дня, то всегда новый номер, а то долго... И волки сыты и овцы целы... Почему один раз в день? Пустых много меньше, чем добавляется...
...
Рейтинг: 0 / 0
Нужно найти несуществующую циферку! :)
    #32298130
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а порядковые номера записей налету генерируются и нехрен засирать базу пустыми циферками...
...
Рейтинг: 0 / 0
Нужно найти несуществующую циферку! :)
    #32298806
Малиновский Владимир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обязательно по этому поводу прочтите:


|>
...
Рейтинг: 0 / 0
Нужно найти несуществующую циферку! :)
    #32298808
Малиновский Владимир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пардон, читайте по этому поводу:

http://www.rsdn.ru/article/mag/200301/GUIDEcology.xml
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Нужно найти несуществующую циферку! :)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]