勝手にデータが置き換わる!

ある人が、お客様から相談を受けました。仮にA子さんとします。
相談の内容はこうです。

「SQL-Serverのテーブルをリンクして使っているんだけど、データを更新すると、ぜんぜん関係ないレコードまで同じ値になっちゃうんですよ」


A子さんもリンクテーブルを作り、やってみました。が、どうやってもそんな現象は発生しません。
テーブル名に問題があるのかと思い、同じ名前にしてみましたが駄目
項目名に問題があるのかと思い、同じ名前にしてみましたが駄目
ODBCドライバに問題があるのかと思い、同じバージョンにしてみましたが駄目
MDB が破損しているのかと思い、最適化してみましたが駄目

A子さんの環境ではどーーーーやっても再現しませんが、お客様の環境では必ず100%絶対に百発百中再現します。
ほとほと疲れ果てたA子さん。SQL-Server のテーブルデータと、MDB を送ってもらうことにしました。
数日後、送られてきたデータを確認したA子さんは、ある恐ろしい事実に気づきました。

問題のテーブルには、ユニークインデックスが無かったのです。

リンクテーブルは、リンク先に一意となるインデックスが無い場合、読取専用となりデータを更新することができないはず。
では、ではどうして...?これは、魔法...?

A子さんは、リンクテーブルのデザインを確認しました。すると、驚いた事にそこには主キーが設定されているではないですか。
A子さんは一瞬目の前が真っ暗になりました。

そうです。お客様は、ユニークインデックスが無いテーブルのリンクテーブルを作るときに、Access が出力するダイアログ「固有レコード識別子の選択」で、ぜんぜん一意にならない項目を選択していたのです。

「固有レコード識別子の選択」で指定された項目の値が同じレコードが複数ある場合、そのレコードのうち1つを更新すると他のレコードもぜーんぶ同じ値になってしまうのでした。

...いやぁ。そんな動作になるとは。知らなかったですよ。

トラックバック(0)

トラックバックURL: http://www.naboki.net/movabletype/mt-tb.cgi/40

Access 心霊体験集

誰も使っていないのに...

The items might be used by nobody

何故、自宅のマシンでは

Why don't work the MDB in my home PC!? No way!

このアプリケーションは不正な処理を実行しました

This application has performed an illegal operation and will be terminated.

勝手にデータが置き換わる!

The data has been changed automatically!

見えない何かが、いる。

Something is there which I cannot see it

MSDN クラウド 技術解説コミック新登場 クラウド ガール - 窓と雲と碧い空 -