|
|
su.dbms.sql- SU.DBMS.SQL ------------------------------------------------------------------ From : Tolik Gusin 2:5020/400 11 Apr 2001 14:29:03 To : All Subject : Re: Дремина хитрость 2 -------------------------------------------------------------------------------- Hi Ilya, > >Если честно, то я не очень понял... То есть у нас есть одна > >главная таблица (Mater), и на нее ссылаются несколько дургих > >таблиц (Detail)? > > Да он просто не может нормально организовать работу Дельфовой > формы, сделанной по стандартным дельфовым правилам. Если не трудно то расскажи какие "делфевые правила" ты имеел ввиду ? > Да, в этом случае надо либо сохранять Master и Detail > в памяти клиента или СHАЧАЛА вставить мастера ( ввести данные > в форме и послать их на сервер и получить ID ), а затем > при известном ID-е вставлять все Detail-ы ( редактировать их > в форме ). Hикаких проблем вообще нет. То что предлагаешь ты легко сделать когда: 1) У тебя One Master - One Detail. В этом случае ты данные и Master и Detial можешь хранить в обычных контролах (например TEdit) и по кнопке "Записать" сделать то что ты и предлагаешь. 2) Когда рамки твоей задачи позволяют сначала ввести Master и сделать Commit, а потом уже уже вводить любое число Detail. А вот когда у тебя связь One Master - Many Detail и вводить данные и одного Master и "N" Detail надо "одновременно" в рамках одного ввод (документа, транзакции) тут и возникает проблемма где хранить N строк Detail до того как я получу ID для Master и запишу эти N строк в таблицу. Причем одним из ограничений стоит создание достаточно унифицированного кода на ввод и редактирование данных в Detail таблице. Можно конечно хранить N строк в чем ни буть наподоби MemoryTable, а потом оттуда перегружать данные в таблицу, но это не удобно и много лишней работы. А кроме того тут будут разные алгоритмы работы для Insert и Update что не очень хорошо. И тот вариант что я использую и позволяет это сделать. Я не утвердаю что у него нет недостатков, они есть: 1) Из за отсутствия у Sybase генераторов или последновательностей их приходиться имитировать. 2) Это на мой взгляд самый серьезный недостаток и как его преодолеть в рамках самого SQL сервера я не знаю. Дело тут в том что я не могу для одновременных связок One Master - Many Detail сделать FK от Detail и Master и его поддерживать приходиться на клиенте при Insert и Update и в триггере Master'a при Delete. Ведь у меня получаеться что: сначало я получаю через свой ручной генератор ID для Master'a, потом используя его я вставляю Detail'ы в таблицу, а потом уже вставляю Master в таблицу. И из за этого применения FK тут почти не возможно, разве что можно воспользоваться опицией FK "отложить проверку до COMMIT" - Check On COMMIT. Кстати а в каких серверах это есть кроме SAW ? -- С Уважением, Stalker E-mail: stalker732_4@yahoo.com stalker4@mail.ru FIDO: 2:464/732.4 ICQ: 28177787 Origin: The History is Dead --- ifmail v.2.15dev5 * Origin: Alkar Teleport News Server (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /su.dbms.sql/408342d1fae8.html, оценка из 5, голосов 10
|