2011-02-02 2 views
1

Я использую Delphi2010, и я пытаюсь сделать вставку в несколько таблиц. Я не знаю, как это сделать. Мне интересно, есть ли способ сделать одну вставку, используя один из инструментов Delphi, например TQuery или TClientDataSet, или было бы лучше использовать код (мы используем язык Pascal). Может быть, массив? Я не использовал Delphi так долго, но раньше я вставил и обновил информацию в одну таблицу, а не несколько. Кроме того, эти таблицы используют почти те же имена полей.Вставка в несколько таблиц

Любая помощь была бы принята с благодарностью.

Спасибо заранее!

+0

В какой базе данных вы используете? – RRUZ

+2

Вы, безусловно, не предоставляете достаточной информации, чтобы дать сколько-нибудь значимый ответ. –

ответ

1

Вызовите хранимую процедуру для обновления таблиц одновременно с помощью обертки транзакций. Или переконструируйте свою базу данных, чтобы устранить дубликаты/избыточные данные, так что вам никогда не понадобится обновлять сразу несколько таблиц. Обратите внимание, что этот ответ совершенно верен, учитывая информацию, представленную в вопросе ... (Примечание: поздно, не мог спать, скучно. Это то, что вы получаете, учитывая качество информации в вопросе!)

1

Другим возможным решением может быть создание обновляемого представления в базе данных и обновление представления из Delphi.
Создание обновляемого представления просто перемещает работу по обновлению 2 таблиц в SQL, а не в Delphi.
Это перемещает бизнес-логику в sql вместо Delphi. Это propobly также создает меньше сетевых трафиков.

Как пишет Крис: используйте транзакции, когда 2 или более обновлений/вставок зависят друг от друга.

1

Какие компоненты доступа к данным вы используете? Какие у вас ограничения? Вы хотите вставить те же значения в обе таблицы? Почему не легко:

for i = low(tables) to high(tables) do 
    begin 
    query.sql.text := 'insert into '+tables[i]+' (fields) values('+ ...)'; 
    query.execsql; 
    end; 
Смежные вопросы