Date: Fri, 26 Aug 2005 13:24:27 +0900
From: "Akira Horikawa" <who@example.ne.jp>
堀川です、こんにちは
-----Original Message-----
From: who@example.or.jp [mailto:who@example.or.jp]
Sent: Friday, August 26, 2005 9:44 AM
To: who@example.ne.jp
Subject: [ml-msde-beg:01640] 連鎖参照整合性について
データベースダイアグラムで表示されるものは、データベースの
現在の状況を正しく反映しているのではなく、データベース
ダイアグラムを使って何か定義した内容だけが表示されます。
つまり、テーブル上は参照整合性制約を設定しても、その設定が
SQL文で直接行なわれたり、テーブルのリレーションシップ
プロパティから行なわれたりしたときは、ダイアグラム上は何も表示
されません。
ですから、ダイアグラムの内容を見て、データベースのテーブルの
状況を判断するのは誤りになります。
すべての操作をダイアグラム上で完結するのであれば、
ダイアグラムで判断することができます。
MSDE(SQLServer7互換)のデータベースエンジンは、参照整合性の
連鎖更新、連鎖削除機能は、データベースエンジンの仕様として提供
されません。
MSDE2000(SQLServer2000互換)から、連鎖更新、連鎖削除が
提供されます。
またAccess2002または2003では、Accessプロジェクトのテーブル
デザインのリレーションシップのところで、連鎖更新、連鎖削除の
チェックをON/OFFする機能が追加されています。
ですから、連鎖更新、連鎖削除に頼るアプリケーションを作成する
のであれば、
MSDE2000 + Access2002 または 2003
の組み合わせとなります。
もちろん、SQL文から連鎖機能を設定するのであれば、
MSDE2000 + Access2000
で、まったく問題はありません。
Access2000でも、修正プログラムを導入すれば、MSDE2000への
接続がサポートされます。
| http://www.microsoft.com/japan/office/previous/2000/Access/
| 日本語版「Access 2000 - SQL Server 2000 対応アップデート」提供開始!
| Microsoft Access 2000 と Microsoft SQL Server 2000 の連動性が向上しまし
た。
| アップデートの内容や関連情報などを公開しています。
上記の詳細情報が見当たりませんね
ただ、
Office 2000 アップデート: Service Pack 3 (SP-3)
の中に、含まれています。
これをインストールすると、
MSDE2000 + Access2000
の開発が可能になります。
ただ、リレーションのプロパティで、連鎖更新、削除の設定ができるように
なるかは不明です。
SQL文からリレーションの操作を行なうときは
sp_helpconstraint 'テーブル名'
を実行すると、該当したテーブルに設定された外部参照情報(FOREIGN KEY)
がわかります。
リレーションの制約の名前と、連鎖更新(update_action)、連鎖削除
(delete_action)
の現在の状態が表示されます。
Cascadeと表示されたら、連鎖機能は設定されています。
No Action と表示されたら、連鎖機能は設定されていません。
連鎖機能を操作するためには(ON/OFF)、今設定されているリレーション情報を
削除して、再設定しなければいけません。
リレーションの削除は、
sp_helpconstraint 'テーブル名'
で表示されたFOREIGN KEY制約のconstraint_name列の値(制約の名前)を使って
alter table テーブル名
drop constraint 制約の名前
で、今存在するリレーションを削除します。
リレーションの設定は、
alter table テーブル名
add constraint リレーションに付ける制約の名前
foreign key (列名リスト)
references 主キー側テーブル名(列名リスト)
on delete cascade
on update cascade
です。
on delete cascadeを省略すれば、連鎖削除は実行しません。
on update cascadeを省略すれば、連鎖更新は実行しません。
連鎖更新、連鎖削除は、デフォルトでは、無効になっています。
リレーションに付ける制約の名前は、わかりやすい名前にすると
良いでしょう。
例えば、
FK_主キー側テーブル名_列の名前_参照側テーブル名_外部キーの列の名前
のような感じにすると良いと思います。
SQL文からメンテナンスをすれば、今の環境でも、開発は可能です。
------------------------------------
Epata-IT/日本技術ソフト開発
堀川 明 (Akira Horikawa)
08月26日(金曜日) 13時18分記
mailto:who@example.ne.jp
http://www.horikawa.ne.jp/msde/
[MSDE/SQLServerに関して、今、どんなことにお困りですか?] |
よろしければお困りの内容を、電子メールで教えて下さい。 |
質問を電子メールで作成する
|
[ウィンドを閉じる][MSDE/SQLServer FAQ ][MSDE / MSDE2000 技術サポート情報一覧]
|