select * into別のテーブルからテーブルを作成するために使用しておりSET IDENTITY_INSERT ON、新しく作成されたテーブルに ID 列を含むデータを受け入れるために使用しています。
ここで私の質問は、テーブル B の ID プロパティをテーブル A にコピーせずに、別の既存のテーブル (テーブル B など) からテーブル (テーブル A など) を作成する方法はありますか?
select * into別のテーブルからテーブルを作成するために使用しておりSET IDENTITY_INSERT ON、新しく作成されたテーブルに ID 列を含むデータを受け入れるために使用しています。
ここで私の質問は、テーブル B の ID プロパティをテーブル A にコピーせずに、別の既存のテーブル (テーブル B など) からテーブル (テーブル A など) を作成する方法はありますか?
もちろん、次のTABLEAように見えるとしましょう。
CREATE TABLE TABLEA (
ID INT PRIMARY KEY IDENTITY(1, 1),
Column1 VARCHAR(50)
)
TABLEB同じように見えるとしましょう。TABLEBID 列を移動せずにから にデータを移動する場合はTABLEA、次のステートメントを記述します。
INSERT INTO TABLEA (Column1)
SELECT Column1 FROM TABLEB
これにより、すべての新しい行がTABLEA独自の ID 値を取得します。
ただし、列SELECT * FROM TABLEBも選択されるため、 a を発行できないことに注意してください。ID個別に必要なすべてのフィールドをリストする必要があります。しかし、一般的に言えば、非常に経験豊富な DBA やプログラマーの多くはSELECT * FROM Table、スキーマが変更されるとすべてが壊れてしまうため、非常に危険だと言うと思います。あなたは本当に常に具体的になりたいと思っています。
SELECT STUFF((SELECT ', ' + c.name FROM sys.columns c where c.object_id = OBJECT_ID('dbo.TABLE_NAME') and c.is_identity <> 1 FOR XML PATH('')),1, 2, '') AS CSVColumn
これにより、各テーブルの列のコンマ区切りリストが得られます。これらのステートメントをメモ帳にコピーして、実行できるスクリプトを作成します。