テーブルのスキーマ変更

SQL Server 2005以上では、テーブルのスクリプト化機能が付いている。
これをうま使えば、テーブルのスキーマが変更になったときでも、テーブルの構造や型を修正できる。
 一般にテーブル間に親子関係がある(外部キー制約がある)場合は、親テーブルだけDROP TABLEすることはできない。子テーブルを先にDROP TABLEしてからでないと、次のようなメッセージが表示される。
オブジェクト 'dbo.部門' を削除できませんでした。このオブジェクトは、FOREIGN KEY 制約で参照されています。

 このようなときは、[テーブルをスクリプト化]-[DROP to およびCREATE to]を選んでDROP TABLEとCREATE TABLE句を自動で生成すればよい。ただし、ここで生成されるクエリーは、テーブルの削除と生成をまとめて行うようになっているので、親子テーブルを作りなおすときは注意が必要である。親子テーブルの親テーブルのスキーマを変更する手順は次のようになる。まず第一に、親と子テーブルのクエリーを生成する。第二に子テーブルのDROP TABLE句までを実行する。第三に親テーブルのスキーマを修正してクエリーをすべて実行する。最後に、子テーブルの残りのクエリー(CREATE TABLEと主キー、外部キー制約)を実行する。

トラックバック

トラックバックURL:
http://www.apricot-jp.com/cgi/mt/mt-tb.cgi/402

関連情報

Copyright(C) 2007 アーキテクト360 Allrights reserved.