|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
25.05.2008, 20:48 | #1 |
Форумчанин
Регистрация: 27.07.2007
Сообщений: 123
|
Как получить ID для новой записи с использованием триггеров?(Firebird)
есть две таблицы 1-главная, 2-подчиненая.
программа сетевая и в одо и тоже время могут добавить записи несколько пользователей, как мне проставлять id в подчиненной таблице если транзакция главной таблици не закомичена(commit)? PS суть программы: шапка документа и табличная часть (как накладные делают)
Ну что ж… Жизнь иногда такие фертеля выкидывает, что и фантасту не приснится…
|
26.05.2008, 03:42 | #2 |
Форумчанин
Регистрация: 04.03.2007
Сообщений: 615
|
используй генераторы
gen_id(gnr_name_generator,1) |
26.05.2008, 06:15 | #3 |
Форумчанин
Регистрация: 27.07.2007
Сообщений: 123
|
это понятно - увеличение значения генератора на 1.
проблема в другом: если запись в главной таблице еще не записана, а требуется вводить данные в подчиненную таблицу какой id вставлять в ПОДЧИНЕННУЮ таблицу?
Ну что ж… Жизнь иногда такие фертеля выкидывает, что и фантасту не приснится…
|
26.05.2008, 08:20 | #4 |
Форумчанин
Регистрация: 04.03.2007
Сообщений: 615
|
у тебя id в главной таблице (номер накладной) - к примеру таблица DOC (шапка накладных) должен быть равным id в подчинённой таблице (номенклатура в накладной) к примеру в таблице PosDoc
а противном случае, как же ты будешь выставлять счёт-фактуру на оплачиваемый товар? на основании чего? на основании счёта. соответвенно в базе об этом должна быть информация |
26.05.2008, 08:29 | #5 |
Форумчанин
Регистрация: 31.10.2007
Сообщений: 103
|
Можно сохранять все ID подчиненной таблице в массиве и потом при заиси документа проставить туда ID основной таблицы. Но та делать не стоит как ты можешь добавить подчиненную запись не имея главной записи. А если пользователь создаст документ насохраняет подчиненных записей а потом его закроет не сохраняя главную запись что тогда? удалять все записи которые занес пользователь. Лучше все подчиненные заиси хранить в памяти до, записиглавной.
|
26.05.2008, 08:33 | #6 |
Форумчанин
Регистрация: 04.03.2007
Сообщений: 615
|
AlexandrSid
для этого и есть генераторы а подчинённая и главная аблица - я описал выше... |
26.05.2008, 08:52 | #7 | |
Форумчанин
Регистрация: 31.10.2007
Сообщений: 103
|
Цитата:
Для чего? Для этого? |
|
26.05.2008, 08:58 | #8 | |
Форумчанин
Регистрация: 27.07.2007
Сообщений: 123
|
Цитата:
вот я тут схемку нарисовал как оно получается (для наглядности)
Ну что ж… Жизнь иногда такие фертеля выкидывает, что и фантасту не приснится…
|
|
26.05.2008, 09:05 | #9 |
Форумчанин
Регистрация: 31.10.2007
Сообщений: 103
|
Ну так в чем проблема, хранишь все записи только на форме, а при записи документа, после получения ID и записи главной таблицы сохрагяешь все подчиненные записи уже с известным ID главной таблицы.
Последний раз редактировалось AlexandrSid; 26.05.2008 в 09:23. |
26.05.2008, 09:06 | #10 |
Форумчанин
Регистрация: 04.03.2007
Сообщений: 615
|
Paul Hindenburg
я что то не пойму, что значит не сформирован ID? вы когда создаёте документ, то у этого документа есть номер, этот номер и есть id (генератор) для всего тела документа а когда второй пользователь в этот же момент будет создавать документ, то у него генератор будет на +1 больше, соответственно и номер документа будет на +1 больше... что здесь сложного? или я чего то не понимаю? |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Открытие новой формы в VB | byte916 | Помощь студентам | 1 | 04.03.2008 19:10 |
TSQLConnection и FireBird | Abercrombie | БД в Delphi | 5 | 12.02.2008 14:11 |
Создание новой записи | Gerox | БД в Delphi | 3 | 30.12.2007 14:22 |
Проблема с новой формой | Ellita | Общие вопросы Delphi | 11 | 06.09.2007 17:14 |
округление в Firebird | shurik_7866 | БД в Delphi | 0 | 05.07.2007 11:10 |