■SI Object Browser 掲示板


ユーザの皆様、開発者、サポート担当者の交流のための掲示板です!

ユーザーの皆様同士で教え合ったりもできる交流の場にしたいと思っていますので、相互協力をよろしくお願いします。
なお、過去に同じようなQ&Aがあるケースも多いので、投稿前にキーワード検索してみてください。

discussion
※各投稿のカラーは対象となる製品に対応しています。【■…OB ■…OBER ■…全般 ■…その他】
※ライセンスに関するお問合せにつきましては、お問い合わせページよりご連絡いただきますようお願いいたします。
※誹謗中傷や公序良俗に反する書き込みはご遠慮ください。運営側の判断によりメッセージを削除する場合があります。
※環境依存や技術的調査が必要な問題については掲示板上ではお答えしかねます。ご了承ください。
リンクキーがいつの間にか変わってしまう 2004/01/19 20:22 OBER 4
タイミング等はわからないのですが、
特に変更等を行っていないテーブルなのに、
リンクキーがいつの間にか変わってしまうということが何度も発生しています。
例えば、以下のような項目でリンクを張っていたものが、A→Bのように変わってしまう。
A)
親キー属性 子キー属性
資金管理番号 = 精算書作成元資金管理番号
明細番号 = 精算書作成元明細番号
↓
B)
親キー属性 子キー属性
資金管理番号 = 資金管理番号
明細番号 = 明細番号

回避策等がありましたら教えていただけますよう、
よろしくお願い致します。
こんにちは
後迫@SIです。

お問い合わせいただきました件につきまして
お手数ですが、以下の追加情報をいただいてもよろしいでしょうか。

①リンク先のテーブル(子テーブル)を変更しているということはありますでしょうか?
それともリンク先のテーブルもまったく編集していませんでしょうか?

②問題の発生するエンティティで
複数のリレーションをはっているということはありますでしょうか?

お手数をお掛けしてしまい申し訳ございません。
どうぞよろしくお願いいたします。

以下お答え致します。

>①リンク先のテーブル(子テーブル)を変更しているということはありますでしょうか?
>それともリンク先のテーブルもまったく編集していませんでしょうか?
親・子各テーブルに対する変更はしておりません。
リンク先のテーブルがリンクしているテーブルを変更致しました。


>②問題の発生するエンティティで
>複数のリレーションをはっているということはありますでしょうか?
複数のリレーションをはっております。

リンクキーが変更されるタイミングが判りました(再現できました)ので、追記させて頂きます。

以下のようなリンクがはられたテーブルが存在します。

Aテーブル
|
Bテーブル(Aテーブルを親とする(依存))
|
Cテーブル(Bテーブルを親とする(非依存))


Aテーブルの項目の属性を変更します
(例)CHAR(1) → CHAR(3)

そうすると
Cテーブルのリンクが以下のように置き換わってしまう。

BEFORE)
親キー(Bテーブル)属性/子キー(Cテーブル)属性
A = C
B = D
↓
AFTER)
親キー(Bテーブル)属性/子キー(Cテーブル)属性
A = A
B = B

子キー属性の中に、親キー属性と同じ名前の項目が存在していることも
原因のひとつのようにみえるのですが、回避策がありましたら、お教えください。

以上、よろしくお願い致します。
こんにちは
後迫@SIです。

追加情報をいただきありがとうございます。
2点だけ、再現方法について確認させていただきたいのですが、

①
 Cテーブルには、Bテーブルと同じ属性名が存在し、
 かつ、その属性はBテーブルの外部キーとは
 なっていないということでしょうか。

 例えば以下のようなA→B→Cのリンクになっている場合に、
 Aのデータ型を変更すると、
 CエンティティにはってあるAAA,BBBの外部キーが
 AA、BBのに置き換わるということでよろしいでしょうか。

 Aエンティティ
 ------------
 A(PK)

 Bエンティティ
 -------------
 AA(PK)(AのFK)
 BB(PK)

 Bエンティティ
 -------------
 AAA(AAのFK)
 BBB (BBのFK)
 AA
 BB

②
 Aエンティティのデータ型を変更した場合に、
 「主キー項目の情報を外部キー項目に反映させますか?」とメッセージボックスが
 表示されると思うのですが、いいえを押した場合でも同様なのでしょうか。

以上、たびたび
お手数をお掛けしてしまい申し訳ございませんが、
どうぞよろしくお願いいたします。
お世話になっております。

以下、回答させて頂きます。
>①
> Cテーブルには、Bテーブルと同じ属性名が存在し、
> かつ、その属性はBテーブルの外部キーとは
> なっていないということでしょうか。
>
> 例えば以下のようなA→B→Cのリンクになっている場合に、
> Aのデータ型を変更すると、
> CエンティティにはってあるAAA,BBBの外部キーが
> AA、BBのに置き換わるということでよろしいでしょうか。
>
> Aエンティティ
> ------------
> A(PK)
>
> Bエンティティ
> -------------
> AA(PK)(AのFK)
> BB(PK)
>
> Cエンティティ
> -------------
> AAA(AAのFK)
> BBB (BBのFK)
> AA
> BB

はい。上記のようなリレーションとなっております。
更に補足させて頂きます。

AとBが依存の関係かつ、
BとCが非依存。
AとBエンティティのFK項目名は同名。
(上記図で言うと、Aエンティティの属性はAでなくAA)
(※FK項目名称が異なると「反映しますか?」のメッセージは出力されないようです)
BとCのFK項目名は異なる。

>②
> Aエンティティのデータ型を変更した場合に、
> 「主キー項目の情報を外部キー項目に反映させますか?」とメッセージボックスが
> 表示されると思うのですが、いいえを押した場合でも同様なのでしょうか。

はい。「いいえ」を押した場合で起こりました。

こちらでサンプルEDMを作成したので、
そちらをメールにて送信させていただきます。

以上、よろしくお願い致します。