[研究]T-SQL, 用 INSERT INTO SELECT 複製資料表,來源 和目的 的 ID 欄位是 auto increment
2024-01-22
環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C# + SQL Server 2019 + SQL Server Management Studio (SSMS) 19
********************************************************************************
複製資料表有兩種常見的方法:
- SELECT INTO:
使用 SELECT INTO 語句可以將一個表的內容複製到一個新的表。這種方法不僅複製資料,還可以複製結構(包括索引、約束等)。
SELECT *
INTO NewTable
FROM OldTable;
在這個例子中,NewTable 是新建的表,OldTable 是要複製的表。這種方法還可以用來在不同的資料庫中進行資料的複製。
- INSERT INTO SELECT:
使用 INSERT INTO SELECT 語句也可以實現資料表的複製。這種方法比較靈活,可以選擇性地複製部分欄位,同時還可以進行一些轉換。
INSERT INTO NewTable (Column1, Column2, ...)
SELECT Column1, Column2, ...
FROM OldTable;
在這個例子中,你可以指定要複製的欄位,同時還可以對資料進行一些處理。
這兩種方法都有各自的使用場景,選擇其中一種取決於你的需求。如果你希望快速且簡單地複製整個表,SELECT INTO 可能更適合。如果你需要更多的靈活性,並且希望自定義複製的內容,那麼 INSERT INTO SELECT 可能是更好的選擇。
********************************************************************************
T-SQL, 用 INSERT INTO SELECT 複製資料表,來源 和目的 的 ID 欄位是 auto increment
ChatGPT
-- 允許目的表的 IDENTITY_INSERT SET IDENTITY_INSERT DestinationTable ON; -- 執行 INSERT INTO SELECT,並指定列 INSERT INTO DestinationTable (ID, OtherColumn1, OtherColumn2, ...) SELECT ID, OtherColumn1, OtherColumn2, ... FROM SourceTable; -- 禁用目的表的 IDENTITY_INSERT SET IDENTITY_INSERT DestinationTable OFF; |
********************************************************************************
用 SELECT INTO 複製資料表時,目的資料表有新欄位 ID,是 auto increment
-- 使用 SELECT INTO,同時指定 ID 列的值為來源表的 ID 列值 SELECT ID = IDENTITY(INT, 1, 1), OtherColumn1, OtherColumn2, ... INTO DestinationTable FROM SourceTable; -- 或者如果表格已經存在,你也可以使用 ALTER TABLE -- 來源有,目的也會有,不用做 -- ALTER TABLE YourTable ADD YourColumn INT IDENTITY(1,1); -- 在現有表格上添加主鍵約束 -- 來源有,目的不會有,要做 ALTER TABLE YourTable ADD CONSTRAINT PK_YourTable PRIMARY KEY (YourColumn); |
********************************************************************************
用 SELECT INTO 複製資料表時,來源資料表和目的資料表都有欄位 ID,是 auto increment
-- 使用 SELECT INTO,同時指定 ID 列的值為來源表的 ID 列值 SELECT Column1, Column2, ... INTO DestinationTable FROM SourceTable; -- 或者如果表格已經存在,你也可以使用 ALTER TABLE -- 來源有,目的也會有,不用做 -- ALTER TABLE YourTable ADD Column1 INT IDENTITY(1,1); -- 在現有表格上添加主鍵約束 -- 來源有,目的不會有,要做 ALTER TABLE DestinationTable ADD CONSTRAINT PK_DestinationTable PRIMARY KEY (Column1); |
(完)
相關
沒有留言:
張貼留言