powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Подчиненные таблицы
11 сообщений из 11, страница 1 из 1
Подчиненные таблицы
    #32476794
Winni-Pooh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые профи SQL! У меня возможно тривиальный вопрос:
1.есть таблица-мастер, ключ искусственный, создается генератором
2.есть подчиненные таблицы, связанные с мастер имхо по этому ключу
3.Запись в мастер таблице и записи в дочерних заносятся в рамках одной транзакции(т.е.кардинальные внешние ключи), и запись с конкретным значением ключа в мастер не может существовать без записей, ссылающихся на мастер-таблицу.
Яркий пример: товарная накладная(шапка+перечень поступивших товаров)
Как можно средствами IB проконтролировать, что в транзакции, если происходит вставка записи в мастер-таблицу, то должны быть вставки с данным ключом в подчиненные?
...
Рейтинг: 0 / 0
Подчиненные таблицы
    #32477120
Dik76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что значит проконтролировать? И зачем это надо?
...
Рейтинг: 0 / 0
Подчиненные таблицы
    #32477209
Matt Juntunen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Варианты:
1. Вставляй записи в одной ХП, шансы что накроеться вставка "подчиненной"- минимальны.
2. Можно триггером - "Если вставка в главную - вставка в подчиненную строк по определ. условиям".
3. Доп. контроль на клиенте, Select Count() из мастера с нулевым кол-вом строк в подчиненном.
...
Рейтинг: 0 / 0
Подчиненные таблицы
    #32477278
Фотография dalai lamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если вставка не происходит, значит был эксепшын. транзакция откатываешь и все само происходит как ты хотел



зы. а что такое искуственный ключь и кардинальные внешние ключи??
...
Рейтинг: 0 / 0
Подчиненные таблицы
    #32477309
Фотография Zmeishe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для большей надёжности отними право INSERT у всех пользователей на эти две таблицы. И назнач это право INSERT своей ХП также на эти две таблицы.
Таким образом, в обход логики этой процедуры никто не сможет напихать записей в таблицы напрямую.
...
Рейтинг: 0 / 0
Подчиненные таблицы
    #32477817
Winni-Pooh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос об использовании ХП упирается в проблему передачи нескольких строк для одной подчиненной таблицы. Или я не знаю каких-то возможностей? А контроль нужен для того, чтобы в Базе Данных не сохранились только шапки товарных накладных. А про триггерную реализацию примерчик мона?
...
Рейтинг: 0 / 0
Подчиненные таблицы
    #32477893
Фотография VF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если организовать вызов 2-ой ХП из 1-ой по вставке в подчинённую таблицу и вызывать столько раз, сколько строк надо вставить, посчитать кол-во вставляемых строк можно ведь...

а с триггерами, так создаёшь триггер AFTER или BEFORE INSERT на главную таблицу, а в теле триггера пишешь, что надо выполнить, но опять же если вставлять в подчинённую несколько записей, то надо знать их кол-во...
...
Рейтинг: 0 / 0
Подчиненные таблицы
    #32477983
Winni-Pooh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извини, но количество видов товаров по накладной может быть разным и заранее неопределенным при приемке "по факту"
...
Рейтинг: 0 / 0
Подчиненные таблицы
    #32480398
Фотография VF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извини, но количество видов товаров по накладной может быть разным и заранее неопределенным при приемке "по факту"
то есть нельзя посчитать сколько товаров будет заноситься? странно...
я бы сделал так: сначала формируешь типа таблицу пришедших товаров (ну там временная таблица или ещё чо нить в этом роде) потом считаешь кол-во позиций, ну а потом уже окончательная вставка в базу, где всё это и должно храниться (само собой очищаешь врямянку после этого)... короче создавай таблицу типа для предварительной обработки, если средствами сервера БД или на клиенте чо нить подобное организуй, типа кэш или буфер, как там правильно-то это назвать...
...
Рейтинг: 0 / 0
Подчиненные таблицы
    #32480444
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я делаю так. В master таблице существует поле DOC_STATE, которое может быть в трех состояния: 1 - Browse, 2 - Insert, 3 - Edit. Если DOC_STATE = 1, проверка в триггерах не осуществляется. После разнесения данных по подчиненным таблицам меняется DOC_STATE и выполняется проверка. Причем в подчиненных таблицах триггерами проверяется DOC_STATE. Если запись master таблицы не находится в состоянии редактирования или вставки, то ганериться исключение.
...
Рейтинг: 0 / 0
Подчиненные таблицы
    #32558720
Winni-Pooh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Реализовал так, как описывал FreemanZAV. Работает обалденно, не тормозит, и очень легко отыскивать разрушенные документы! СПАСИБО за гениальное решение!
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Подчиненные таблицы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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