マルチユーザー環境では、同一のオブジェクトに複数のユーザーが同時に変更を加える場合があります。この現象は、テーブル デザイナまたはデータベース ダイアグラム デザイナでオブジェクトの構造を操作しているときに発生する可能性があります。また、クエリおよびビュー デザイナの結果ペインに返された結果の値に、他のユーザーが変更を加えている場合もあります。こうした現象により、解決を必要とする競合が発生する可能性があります。
テーブル デザイナまたはデータベース ダイアグラム デザイナでの競合
たとえば、テーブル デザイナでテーブルを操作しているときに、他のユーザーが同じテーブルまたは関連するテーブルを削除したり、名前を変更したりする可能性があります。テーブルを保存しようとすると、[データベースの変更を確認] ダイアログ ボックス (Visual Database Tools) によって、テーブルを前回開いた後でデータベースが更新されたことが通知されます。
このダイアログ ボックスには、テーブルを保存する結果として影響を受けるデータベース オブジェクトの一覧も表示されます。この時点で、次のいずれかの処理を実行できます。
- [はい] を選択して、一覧内のすべての変更内容をデータベースに反映させます。
このアクションを実行すると、同じデータベース オブジェクトを共有しているテーブルが影響を受けます。たとえば、titleauthorsテーブルのau_id列を編集しているときに、他のユーザーが、au_id列によってtitleauthorsテーブルと関連付けられているauthorsテーブルを操作しているとします。このテーブルを保存すると、他のユーザーのテーブルが影響を受けます。同様に、あるユーザーがsalesテーブルのqty列に CHECK 制約を定義したとします。別のユーザーがqty列を削除してsalesテーブルを保存すると、最初のユーザーの CHECK 制約が影響を受けます。 - 保存をキャンセルするには、[いいえ]**** を選択します。
その後、保存せずにテーブルを閉じます。テーブルを再度開くと、そのテーブルにはデータベースの現在の内容が反映されています。 - 一覧の変更内容を保存するには、[テキスト ファイルを保存]**** を選択します。
[データベースの変更を確認] ダイアログ ボックスに表示されているデータベースの変更内容の一覧をテキスト ファイルに保存すると、他のユーザーによる変更の原因を調査できます。たとえば、削除することにしたテーブルを他のユーザーが編集していた場合、データベースを更新する前にテーブルを削除する必要があるかどうかを調べることができます。
クエリおよびビュー デザイナでの競合
クエリを実行するか、ビューの結果を返すと、結果ペインにデータが表示されます。複数のユーザーが同じデータセットを同時に操作すると、競合が発生する場合があります。
たとえば、他のユーザーと同時に titleauthors テーブルの全データを表示するクエリを実行するとします。他のユーザーが、最初に返されるレコードの名前を Barb から Barbara に変更するとします。この時点で、データベースの該当するフィールドの値は Barbara ですが、こちら側に表示されている結果セットは Barb のままです。ここで、Barbara と入力して、その行から移動するとします。すると、競合の解決方法をたずねるメッセージが表示されます。
- データベースに変更内容を反映させるには、[はい] をクリックします。
他のユーザーの変更をオーバーライドします。 - データベースの現在の内容に結果セットを更新するには、[いいえ] をクリックします。
こちら側の変更が他のユーザーの変更によってオーバーライドされます。 - 競合を解決せずに編集を続行するには、[キャンセル] をクリックします。
この場合、変更を加えてもデータベースにコミットできなくなります。
参照
その他の技術情報
[データベースの変更を確認] ダイアログ ボックス (Visual Database Tools)