MSDE FunClub
Microsoft Data Engine FunClub
MSDE初心者向けメーリングリスト過去ログ[1641]番
 
[TOP]>[MSDE初心者向けメーリングリスト過去ログ(1641番)]>[ウィンドを閉じる]
 
SQLServer2005時代でも
開発の基本は T-SQL
上巻で T-SQL の基礎作り
 
SQLServer2005時代でも
運用の基本はバックアップ
下巻でバックアップ手法を学びましょう
PASSJ人気コンテンツで学んだ後は下巻でさらなる学習を!
 
ウィンドを閉じる
MSDE/SQLServer FAQ
MSDE / MSDE2000 
技術情報サポート
初心者向け
メーリングリスト
過去ログの表示
技術者向け
メーリングリスト
過去ログの表示
メーリングリスト
活動状況の
表示
MSDE TOP メニュー
MSDEトップメニューに移動します
 

 
RE:  連鎖参照整合性について

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 技術サポート情報一覧]

MSDE TOP ページに移動する

 
 
 
 
 
 
 
MSDE FunClubに関するご意見・ご要望等ございましたら、
msdefun@horikawa.ne.jp までご連絡下さい。
MSDEを始めとする各種データベースシステムの開発、コンサルタントに関するご要望等は、
msdedev@horikawa.ne.jp までご連絡下さい。