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

ID列を含む「テーブルA」の内容をコピー&コピーの一部項目を編集して、ID列はリセットして振り直しを行った後、「テーブルA」にINSERTするといった事をしたいのです。編集する項目、IDの項目はKEYになっている。
SQLリファレンスで調べてみましたが、SET IDENTITY_INSERT XXXX ON、DBCC CHECKIDENTなどの使い方がいまいち良くわからないのです。

1.「テーブルA」のIDENTITYをはずした形で、コピー先のテーブル「テーブルB」をCREATE。(レイアウトは全く同じ。)
2.「テーブルA」を全て、「テーブルB」(編集用)へINSERT。
3.「テーブルB」の一部項目を編集、「テーブルA」のID列に相当する項目を'1'から配番する。
4.編集後の「テーブルB」を全て、ID列を含む「テーブルA」にINSERT。
上記3、4項の方法が良くわかりません。

データテーブルは、「年度」・「履歴番号」(ID)・「その他項目多数」を持ち、編集方法は、「年度」を新年度に置換し、「履歴番号」を'1'から振り直したものを、「テーブルA」にINSERTしたいのです。
「履歴番号」(ID)の振り直しの条件はありません。レコードTOPから'1'から順に再配番されればいい。

やりたい事は単純なのですが。。。。初心者ですみません。
助言いただければと思い質問しました。

A 回答 (1件)

通常は以下のように手順3、4は一緒にやります。



SELECT * INTO TABLEB FROM TABLEA
GO
TRUNCATE TABLE TABLEA
GO
INSERT INTO TABLEA(年度,項目1,項目2,...)
SELECT 2010,項目1,項目2,... FROM TABLEB
ORDER BY 履歴番号
GO

もしかして、年度+履歴番号で主キーになっていて、同じテーブルに2009年度と2010年度を両方収録し、しかもそれぞれの年度で1から連番を振るという意味ですか?
その場合は「TRUNCATE TABLE TABLEA」の代わりに、「DBCC CHECKIDENT (TABLEA,RESEED,0)」を実行し、2010年度も1から振られるようにします。
(こういう使い方はあまりお勧めではないですけど)
    • good
    • 0
この回答へのお礼

ありがとうございます

お礼日時:2010/02/20 12:48

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