Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 578

/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!
Подскажите как в базе данных создать автоинкрементное поле, что-то я запутался совсем, либо создавать генератор и основанный на нем триггер в БД либо пользоваться свойством GeneratorField у компонента IBDataSet. Сейчас мой генератор увеличивает значение на 2, что неправильно. и еще, как лучше заполнить ключевое поле, со значениеми "P"+<номер>, можно ли использовать для этой цели генератор?

Казаков Николай Константинович Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Казаков Николай Константинович (статус: 1-ый класс)
Вопрос отправлен: 16 августа 2011, 15:21
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 3; последнее сообщение — 18 августа 2011, 06:02; участников в обсуждении: 2.
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 16 августа 2011, 17:35 [#1]:

Судя по используемому компоненту IBDataSet, используете БД семейства Interbase. В таком случае для автоинкрементного поля используется триггер и генератор в самой БД. Для чего необходимо использование тестового поля в качестве автоинкрементного?
Казаков Николай Константинович

Казаков Николай Константинович (статус: 1-ый класс), 17 августа 2011, 08:51 [#2]:

да, использую FireBird. с увеличением значения генератора на 2 разобрался, использование текстового поля в качестве автоинкрементного не принципиально, но просто интересно возможно это или нет, долго бился, но что-то ничего не вышло ). Что касается использования триггера и генератора, то сначала у меня было так: в БД создал генератор, создал триггер, кот. ссылался на этот генератор (триггер создал с проверкой на NULL). в своем приложение использовал еще и сво-во GeneratorField, что как я в дальнейшем и понял и стало причиной ошибки, после того как отключтл триггер, значение стало формироваться корректно. и последнее, как можно скинуть значение генератора и что из этого получится с учетом того, что он уже использовался для формирования значения полей БД?
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 18 августа 2011, 06:02 [#3]:

лучше использовать генератор и триггер в самой БД - это позволит корректно заполнять автоинкрементное поле даже из других приложений. Если в БД уже есть записи, то генератор лучше не сбрасывать - могут появиться дубликаты значений. В принципе можно использовать текстовое поле для хранения таких значений. Просто в триггере прописываете соответствующее присвоение значения с преобразованием числового значения генератора в строковое, но зачем? Во-первых, потребуется больше места для хранения, во-вторых - поиск по текстовым полям занимает больше времени, чем по числовым. Преобразовывать надо к виду 'P00000001','P00000002',... иначе сортировка даст результат: 'P1','P10','P11','P13','P2','P20'....

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:58
Выполнено за 0.03 сек.