• 締切済み

ACCESSのリレーションが切れてしまいました

素人で甚だ恐縮ではございますが、社内システムのACCESS2003のデータベースでリレーション定義が無くなってしまい、アプリで削除していないにも拘わらず主たるテーブルのレコードの各項目に"deleted"或いは"#deleted"が入ってしまいました。 リカバリーは、「データベースの最適化/修復」を行い、リレーションを定義していた先のテーブル内のレコードを削除し、再度リレーション定義し再登録にて回復しました。 リレーションが切れる(無くなってしまう)原因がわかりません。 どういったケースで発生しうるかご教示頂ければと存じます。

みんなの回答

  • phoenix343
  • ベストアンサー率15% (296/1946)
回答No.1

再登録と言うのがカギ。 外部キーが設定されているってことは、登録する順序があるってことは分かりますよね。 レコードを登録する際、外部キーが設定されていれば、その先のテーブルを参照しに行き、存在するか確認します。ということは外部参照*される*テーブルはすでに登録を終えてないといけないのです(ちゃんとコミットしてね)。 その順序をもう一度確認されることをお勧めします。 まーこんな不具合もあるので一概には言えないんですが… [ACC2002] リンクされた ODBC テーブルで"#Deleted"エラー発生 http://support.microsoft.com/kb/128809/ja

chilcot
質問者

お礼

回答ありがとうございます。ありえないはずと思っていたところメインのキーが削除するメンテナンスがあったようです。仕組みから説明いただき、原因を探ることができました。

関連するQ&A