2011-02-02 52 views
1

私はDelphi2010を使用しており、複数のテーブルに挿入しようとしています。私はこれを行うための最善の方法を知らない。私は、TQueryやTClientDataSetのようなDelphiのツールの1つを使用して1つの挿入を行う可能性のある方法があるか、コードを使用する方が良いかどうかを疑問に思っています。多分配列ですか?私は長い間Delphiを使用していませんが、複数の情報ではなく、1つのテーブルに情報を挿入して更新しました。また、これらのテーブルは、ほとんど同じフィールド名を使用します。複数のテーブルに挿入

ご協力いただければ幸いです。

ありがとうございます!

+0

どのデータベースを使用していますか? – RRUZ

+2

意味のある回答を得るために十分な情報を提供していません。 –

答えて

1

トランザクションラッパーを使用して、ストアドプロシージャを呼び出して同時にテーブルを更新します。または、重複したデータを排除するためにデータベースを再設計して、一度に複数のテーブルを更新する必要はありません。 質問に記載されている情報を元に、この回答が完全に有効であることに注意してください... (注:遅れていても、眠れない、退屈していました。

1

もう1つの解決策は、データベースの更新可能なビューを作成し、ビューをDelphiから更新することです。
更新可能なビューを作成するだけで、2つのテーブルをDelphiではなくSQLに更新する作業が行われます。
これは、ビジネスロジックをDelphiではなくsqlに移動します。それはまた、より少ないネットワークトラフィックを生成する。

Chrisが書いているように、2つ以上の更新/挿入が互いに依存する場合、トランザクションを使用します。

1

どのデータアクセスコンポーネントを使用していますか? どのような制限がありますか? 両方のテーブルに同じ値を挿入しますか? なぜ簡単ではない:

for i = low(tables) to high(tables) do 
    begin 
    query.sql.text := 'insert into '+tables[i]+' (fields) values('+ ...)'; 
    query.execsql; 
    end; 
関連する問題