![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Копирование данных из временной таблицы [D6, FireBird 1.5]
Koala © (2004-07-03 15:52:00)Собственно нужно разгрузить клиентское приложение и сделать средствами сервера копирование данных из временной таблицы в постоянную и при удачном переносе очистить временную. Как сделать не знаю. (я еще новичок в базах). Как сделать програмно из клиентского приложения я знаю, а вот как средствами сервера...? Подскажите где почитать или кто подскажет пример процедуры....
Koala (2004-07-05 16:10:00) [1]
> Johnmen © (05.07.04 15:59) [14]
> либо кеширование набора данных,
> либо TClientDataSet.
Надо пересмотреть подход, ИМХО может Вы и правы ...
Johnmen (2004-07-05 15:59:00) [2]Если я правильно понял суть вопроса, то никаких временных реальных таблиц не надо. Надо использовать
либо кеширование набора данных,
либо TClientDataSet.
Т.е. все изменения/добавления/удаления лежат в памяти. А потом, если надо, отображаютя в реальную таблицу...
Курдль (2004-07-05 15:48:00) [3]
> вот я прошу пояснить что наз. не упадочным....
А я вообще перестал понимать, что в Вашем понимании есть "Временная таблица".
Я думал, что это таблица, создаваемая в БД на короткое время для производства каких-либо подсчетов или других действий над данными, применяемая, когда другими способами (запросами, курсорами) решить задачу не удается.
А у Вас какойй-то непонятный мне бизнес-процесс.
Т.е. определенные данные в какой-то момент времени становятся Вам не нужными и Вы их удаляете безвозвратно?
Koala (2004-07-05 15:37:00) [4]На серваке хранятся все таблицы, журналы и временные таблицы. Чтобы не гонять по сетке эти данные, необходимо разгрузить клиента. Вы утверждаете что создание и использование временных таблиц упадочный стиль, вот я прошу пояснить что наз. не упадочным....
Курдль (2004-07-05 15:32:00) [5]
> Koala (05.07.04 15:29) [10]
Я что-то не заметил никакой роли сервера в этом пояснении?
Что, все таблицы - временные?
Koala (2004-07-05 15:29:00) [6]
> Курдль © (05.07.04 09:34) [8]
> Я считаю, что создание временных таблиц - исключительно
> упадочный стиль программирования!
Что Вы предлагаете для хранения временных данных?
Например диспетчер в свободное время вдо обеда, создает список автомобилей на которые необходимо выписать путевой лист, меняет водителей если закрепленный водитель уходит в отпуск или заболел, т.е. делает некоторые изменения, затем после 16.00 когда пройдет распределение командировок, кто куда и с кем едет, открывает временную таблицу и вносит изменеия, даты выезда и возврата из командировки, какие города, с каким клиентом выезжает, а затем печатает путевые и маршрутные листы. ИМХО без временных таблиц не обойтись или я ошибаюсь??? Если да поясните плиззз....
Ильш (2004-07-05 09:39:00) [7]
> исключительно упадочный стиль программирования
но иногда так и тянет так и тянет УПАСТЬ :))))
Курдль (2004-07-05 09:34:00) [8]
> Koala (03.07.04 17:54) [3]
> может у кого нить есте еще мнения????
У меня есть. Но вряд ли оно Вам понравится.
Я считаю, что создание временных таблиц - исключительно упадочный стиль программирования!
stud (2004-07-05 09:30:00) [9]try
transaction.starttransaction;
ibsql.sql.text:='insert into MainTable(<список полей>) select <список полей> from TmpTable';
transaction.commit;
ibsql.sql.text:='delete from tmptable';
except
transaction1.rollback;
end;
примерно такая конструкция. в случае удачного переноса данных очищаеш временную таблицу, в противном случае возвращаешся к первоначальному состоянию
}{ander (2004-07-04 01:15:00) [10]
> Собственно нужно разгрузить клиентское приложение и сделать
> средствами сервера копирование данных из временной таблицы
> в постоянную и при удачном переносе очистить временную
> удалять TMPTable необходимо когда все данные перенесены
> из временной таблицы
Определись, что нужно: очистить таблицу или удалить (?) ее!
DrPass (2004-07-03 19:23:00) [11]В ХП нельзя делать ни commit, ни rollback. Но клиентское приложение не надорвется, если добавить в него обработку исключений от сервера. Точно также, кстати, оно не надорвется, если отправит на сервер запрос
insert into MainTable(<список полей>) select <список полей> from TmpTable;
без всяких хранимых процедур
GanibalLector (2004-07-03 18:04:00) [12]в ХП вставить что-то типа :
WHEN ANY DO
BEGIN
/*действия при любой нестандартной операции ошибке
или исключении */
END
и в зависимости от ЭТОГО делать COMMIT либо ROLLBACK
Koala (2004-07-03 17:54:00) [13]может у кого нить есте еще мнения????
Koala (2004-07-03 16:22:00) [14]
> 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
3APA3A (2004-07-03 16:16:00) [15]create procedure Proc
as
begin
insert into MainTable(<список полей>) select <список полей> from TmpTable;
delete from TmpTable;
end
Это примерный набросок. Соответствующие поля должны иметь одинаковый тип.