dポイントプレゼントキャンペーン実施中!

SQL Server 2005 Express で、別のデータベースへのテーブルの移行するにあたり、
INSERT INTO データベースB.dbo.テーブルX
SELECT * FROM データベースA.dbo.テーブルX
とすればよいというご回答をいただいています。

で、
IDENTITYを設定しているテーブルがあるとちょっと工夫が必要です。
とのコメントをもいただきましたが、
この「工夫」が分かりません。
どんな方法なのでしょうか?
IDENTITYをはずす方法や、リレーションシップをはずす方法などが思い浮かぶのですが、テーブル構造が複雑で、わけがわからなくなります。
元のIDの値は維持しなくてもよいので、何かよい方法はありますでしょうか?
よろしくお願いします。

A 回答 (3件)

TABLE1 (ID,F1,F2,F3)でIDにIDENTITYが付いていると仮定しますと、



方法1:番号が変わってもよい
INSERT INTO DB2.dbo.TABLE1 (F1,F2,F3)
SELECT F1,F2,F3 FROM TABLE1
GO

方法2:番号もそのままもっていく
SET IDENTITY_INSERT TABLE1 ON
GO
INSERT INTO DB2.dbo.TABLE1 (ID,F1,F2,F3)
SELECT ID,F1,F2,F3 FROM TABLE1
GO
SET IDENTITY_INSERT TABLE1 OFF
GO

いずれにしてもポイントはSELECT * FROM TABLE1ではだめで、フィールド名を羅列する必要があるということです。
なお、IDENTITY_INSERTは一度に1つのテーブルしかONにできませんので、念のため。
    • good
    • 0
この回答へのお礼

ID列の番号が変わってもよい
ということは、どういうことを意味するのでしょうか?
リレーションシップが解けてしまうのでしょうか?
データベースとしての機能を外してID番号を外す以外には、
「番号をそのままもっていく」しかないのでしょう、か?

で、虫がよすぎるかもしれませんが、
リレーションシップなども考えずに(継承されて)、単純に「二つのデータベースを一つに合体する」という方法は、ないのでしょうか?

面倒がらずにやるしかないのでしょうけれど...。
この辺り、ご指導お願いします。

お礼日時:2009/12/02 20:44
    • good
    • 0

>元のIDの値は維持しなくてもよいので、何かよい方法はありますでしょうか?



と書かれていたので、「IDの番号が変わってもよいからINSERTを成功させる方法」を紹介したまでです。
リレーションがある場合は、マスターのINSERTはうまくいきますが、参照元の方はINSERTで外部キーエラーになります。

リレーションシップを維持したいならば、後者の方法しかないでしょう。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!