2

select * into別のテーブルからテーブルを作成するために使用しておりSET IDENTITY_INSERT ON、新しく作成されたテーブルに ID 列を含むデータを受け入れるために使用しています。

ここで私の質問は、テーブル B の ID プロパティをテーブル A にコピーせずに、別の既存のテーブル (テーブル B など) からテーブル (テーブル A など) を作成する方法はありますか?

4

2 に答える 2

2

もちろん、次の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、スキーマが変更されるとすべてが壊れてしまうため、非常に危険だと言うと思います。あなたは本当に常に具体的になりたいと思っています。

于 2013-03-07T11:11:19.203 に答える
0

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

これにより、各テーブルの列のコンマ区切りリストが得られます。これらのステートメントをメモ帳にコピーして、実行できるスクリプトを作成します。

于 2013-03-07T11:32:47.213 に答える