Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.08.01;
Скачать: [xml.tar.bz2];

Вниз

Копирование данных из временной таблицы   Найти похожие ветки 

 
Koala   (2004-07-03 15:52) [0]

Собственно нужно разгрузить клиентское приложение и сделать средствами сервера копирование данных из временной таблицы в постоянную и при удачном переносе очистить временную. Как сделать не знаю. (я еще новичок в базах). Как сделать програмно из клиентского приложения я знаю, а вот как средствами сервера...? Подскажите где почитать или кто подскажет пример процедуры....


 
3APA3A   (2004-07-03 16:16) [1]

create procedure Proc
 as
 begin
   insert into MainTable(<список полей>) select <список полей> from TmpTable;
  delete from TmpTable;
 end

 Это примерный набросок.  Соответствующие поля должны иметь одинаковый тип.


 
Koala   (2004-07-03 16:22) [2]


> 3APA3A   (03.07.04 16:16) [1]



> create procedure Proc
>  as
>  begin
>    insert into MainTable(<список полей>) select <список
> полей> from TmpTable;
>   delete from TmpTable;
>  end
>  

Приблизительно такую процедуру в начале и планировалось делать, но факт в том, что удалять TMPTable необходимо когда все данные перенесены из временной таблицы, в случае ошибки должно вызватся Rollback перед delete from TMPTable


 
Koala   (2004-07-03 17:54) [3]

может у кого нить есте еще мнения????


 
GanibalLector ©   (2004-07-03 18:04) [4]

в ХП вставить что-то типа :
WHEN ANY DO  
BEGIN  
/*действия при любой нестандартной операции ошибке
или исключении */  
END

и в зависимости от ЭТОГО делать COMMIT либо ROLLBACK


 
DrPass ©   (2004-07-03 19:23) [5]

В ХП нельзя делать ни commit, ни rollback. Но клиентское приложение не надорвется, если добавить в него обработку исключений от сервера. Точно также, кстати, оно не надорвется, если отправит на сервер запрос
insert into MainTable(<список полей>) select <список полей> from TmpTable;
без всяких хранимых процедур


 
}{ander ©   (2004-07-04 01:15) [6]


> Собственно нужно разгрузить клиентское приложение и сделать
> средствами сервера копирование данных из временной таблицы
> в постоянную и при удачном переносе очистить временную


> удалять TMPTable необходимо когда все данные перенесены
> из временной таблицы


Определись, что нужно: очистить таблицу или удалить (?) ее!


 
stud ©   (2004-07-05 09:30) [7]

try
transaction.starttransaction;
ibsql.sql.text:="insert into MainTable(<список полей>) select <список полей> from TmpTable";
transaction.commit;
ibsql.sql.text:="delete from tmptable";
except
transaction1.rollback;
end;
примерно такая конструкция. в случае удачного переноса данных очищаеш временную таблицу, в противном случае возвращаешся к первоначальному состоянию


 
Курдль ©   (2004-07-05 09:34) [8]


> Koala   (03.07.04 17:54) [3]
> может у кого нить есте еще мнения????

У меня есть. Но вряд ли оно Вам понравится.
Я считаю, что создание временных таблиц - исключительно упадочный стиль программирования!


 
Ильш ©   (2004-07-05 09:39) [9]


> исключительно упадочный стиль программирования

но иногда так и тянет так и тянет УПАСТЬ :))))


 
Koala   (2004-07-05 15:29) [10]


> Курдль ©   (05.07.04 09:34) [8]



> Я считаю, что создание временных таблиц - исключительно
> упадочный стиль программирования!

Что Вы предлагаете для хранения временных данных?
Например диспетчер в свободное время вдо обеда, создает список автомобилей на которые необходимо выписать путевой лист, меняет водителей если закрепленный водитель уходит в отпуск или заболел, т.е. делает некоторые изменения, затем после 16.00 когда пройдет распределение командировок, кто куда и с кем едет, открывает временную таблицу и вносит изменеия, даты выезда и возврата из командировки, какие города, с каким клиентом выезжает, а затем печатает путевые и маршрутные листы. ИМХО без временных таблиц не обойтись или я ошибаюсь??? Если да поясните плиззз....


 
Курдль ©   (2004-07-05 15:32) [11]


> Koala   (05.07.04 15:29) [10]

Я что-то не заметил никакой роли сервера в этом пояснении?
Что, все таблицы - временные?


 
Koala   (2004-07-05 15:37) [12]

На серваке хранятся все таблицы, журналы и временные таблицы. Чтобы не гонять по сетке эти данные, необходимо разгрузить клиента. Вы утверждаете что создание и использование временных таблиц упадочный стиль, вот я прошу пояснить что наз. не упадочным....


 
Курдль ©   (2004-07-05 15:48) [13]


> вот я прошу пояснить что наз. не упадочным....

А я вообще перестал понимать, что в Вашем понимании есть "Временная таблица".
Я думал, что это таблица, создаваемая в БД на короткое время для производства каких-либо подсчетов или других действий над данными, применяемая, когда другими способами (запросами, курсорами) решить задачу не удается.

А у Вас какойй-то непонятный мне бизнес-процесс.
Т.е. определенные данные в какой-то момент времени становятся Вам не нужными и Вы их удаляете безвозвратно?


 
Johnmen ©   (2004-07-05 15:59) [14]

Если я правильно понял суть вопроса, то никаких временных реальных таблиц не надо. Надо использовать
либо кеширование набора данных,
либо TClientDataSet.
Т.е. все изменения/добавления/удаления лежат в памяти. А потом, если надо, отображаютя в реальную таблицу...


 
Koala   (2004-07-05 16:10) [15]


> Johnmen ©   (05.07.04 15:59) [14]


> либо кеширование набора данных,
> либо TClientDataSet.

Надо пересмотреть подход, ИМХО может Вы и правы ...



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.08.01;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.033 c
3-1089103922
guest_Dmitry
2004-07-06 12:52
2004.08.01
Передать права от одной роли другой


1-1090359562
НовиЧок
2004-07-21 01:39
2004.08.01
Сохранение RichEdit


4-1087403443
DjOne
2004-06-16 20:30
2004.08.01
HookMenu


3-1089093227
MVA
2004-07-06 09:53
2004.08.01
Grid


4-1087921237
Widmo
2004-06-22 20:20
2004.08.01
Parent и ParentWindow





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский