- - PR -
外部結合させて取り込んだdatasetをDBにUpdateする方法
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-03-08 21:30
すみません、私が間違ってていました。外部「結合」ですね。外部「参照」(リレーション、外部キー)と間違っていました。
そういうことです。その上で、DataSet 内で外部参照(リレーションシップ、関連)を張り、親テーブルから削除すると、子テーブルも削除されます。 流れとしては、このようになります。 DataSet 作成 親テーブル取得※ 子テーブル取得※ リレーション作成 親テーブルから削除 子テーブル更新※ 親テーブル更新※ “※”でマークしたところが、データベースとの交信です。 ここで、TBL_HEAD と TBL_BODY にリレーションシップが張られており、変更制約が CASCADE になっているなら、次のようになります。 結合したテーブル取得※ TBL_HEAD から削除する DeleteCommand 作成 テーブルから削除 テーブル更新※ これを、OracleDbCommand を使うようにするなら、プライマリキーがわかっているという前提で、次のようになります。 *リレーションシップがない場合 *または、リレーションシップがあって、CASCADE でない場合 子テーブルから削除※ 親テーブルから削除※ *リレーションシップがあり、CASCADE の場合 親テーブルから削除※ リレーションシップを張って、CASCADE にすると楽に見えます。しかし、いつもこうするのがいいとは限りません。 例えば、取引表と社員マスタがあります。取引表には担当者を示す、社員マスタへの参照があります。このとき、このリレーションを CASCADE にしてはいけません。社員が退職するからマスタから削除すると、取引の記録も消えてしまうからです。 〆 written by Jitta@わんくま同盟 on 2006/03/08 □ Microsoft MVP for Visual Developer ASP/ASP.NET October, 2005 - September, 2006 |