Форум: "Базы";
Текущий архив: 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.034 c