既に作成されたテーブルを取得し、新しい ID (主キー) を持つ新しいテーブルにデータの一部を挿入する SQL クエリの構文を提供できる人はいますか? これまでのところ、私はこれを試しました
SELECT ((ID INT IDENTITY(1,1) PRIMARY KEY), column1, column2, column3)
INTO table_name
FROM table_name
構文エラーが発生し続けます。
既に作成されたテーブルを取得し、新しい ID (主キー) を持つ新しいテーブルにデータの一部を挿入する SQL クエリの構文を提供できる人はいますか? これまでのところ、私はこれを試しました
SELECT ((ID INT IDENTITY(1,1) PRIMARY KEY), column1, column2, column3)
INTO table_name
FROM table_name
構文エラーが発生し続けます。
SELECT column1, column2, column3
INTO table_name_new
FROM table_name_old
このように使う
INSERT INTO newtable (column1, column2, column3)
SELECT (column1, column2, column3)
FROM table_name
以下のようにするだけで、レコードの挿入中に新しいIDが自動的に作成されます
insert into table1 (col1,col2,col3) select col1,col2,col3 from table2;
INSERT INTO new_table
(Column1, Column2 . . . )
SELECT Column1, Column2 FROM old_table
ID 列 (自動生成された番号を持つ主キー) を挿入リストに含めないでください。
MSDNのドキュメントによると、IDENTITY プロパティはSELECT INTO
句を介して転送されますが、制約は転送されません。つまり、ソース テーブルの元の IDENTITY 列を含めると、IDENTITY 列を含む新しいテーブルを作成できますが、新しいテーブルの列は主キーにはなりません。
@Kaiが示唆しているように、これを行うための適切な方法は、テーブルの作成後に ALTER TABLE を使用することです。