Вставка в несколько таблиц - PullRequest
1 голос
/ 02 февраля 2011

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

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

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

Ответы [ 3 ]

1 голос
/ 03 февраля 2011

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

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

1 голос
/ 03 февраля 2011

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

 for i = low(tables) to high(tables) do
  begin
    query.sql.text := 'insert into '+tables[i]+' (fields) values('+ ...)';
    query.execsql;
  end;
1 голос
/ 03 февраля 2011

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

...