Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.01;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.023 c
1-1090418202
pashap
2004-07-21 17:56
2004.08.01
Путь к DLL


3-1089375927
Sergey_
2004-07-09 16:25
2004.08.01
Время из TimeStamp


1-1090222068
Dr.Karter
2004-07-19 11:27
2004.08.01
Вопрос по печати


6-1086197510
Игорь
2004-06-02 21:31
2004.08.01
Компонеты FastNet


1-1089896858
faost
2004-07-15 17:07
2004.08.01
StringGrid+ComboBox?