|
> その後、K3に2回問い合わせしたのですが、
> 桐では主キーの削除などの処理はされていないので、oracle
> の設定に問題があるという回答でした。
主キーの削除はしてないですが、SQLのトレースを見たら、1側でもレコード削除をしているようです。
> やはり納得がいかず、今度はaccessで新たに簡単なtblを2個
> 作成し、odbc接続でAccessに1対多の接続をして多側のレコード
> を削除したら結合した1側の主キーレコードが削除されていまいます。
同様なことをやってみましたが、確かに削除されます。
1側の(と多側もですが)主キーを結合結果に入れないようにしても、更新可能に設定しているため
"SELECT A1.`Text`,A2.`Fkey`,A2.`text`,A1.`PKey`,A2.`Pkey` FROM `t1` A1,`t2` A2 WHERE (A1.`PKey`=A2.`Fkey`)\ 0"
両方とも`PKey`(主キーのフィールド)が加えられていて、行削除すると
"DELETE FROM `t1` WHERE `PKey`=?"
と1側をDELETEした後で
"DELETE FROM `t2` WHERE `Pkey`=?"
多側をDELETEしていました。
(だもんで、Accessの方で参照整合性を定義してあると、1側の削除でエラーになって多側も削除されなかったり)
ただし、結合した表で削除している以上、「多側のレコード」を削除しているのではなく
削除しているのはあくまで結合レコードなので、これがまずい動作なのかは微妙です。
(結合表と違って、結合画面で1-nのような表示はされてませんし。でも結合表では
「結合レコードを削除すると、外部キー側のレコードが削除されます。」となっているし、
1側の結合項目が主キーであることはわかっているのだから結合表と同様の動作を期待しますよね〜)
> なにかヒント等ありましたら何卒よろしくお願いいたします。
削除は単一の表で行なうしかないのでは?
|