我試圖從臨時表插入列,並希望ID列順序遞增。我使用下面的代碼,但沒有得到被插入:插入ID列表
INSERT INTO TestDataTable
SELECT Code, Description, ParentID FROM TempTable
請告訴我,我怎麼能得到這個工作。
我試圖從臨時表插入列,並希望ID列順序遞增。我使用下面的代碼,但沒有得到被插入:插入ID列表
INSERT INTO TestDataTable
SELECT Code, Description, ParentID FROM TempTable
請告訴我,我怎麼能得到這個工作。
您需要將ID設爲IDENTITY column。所以在你的select語句中,應該這樣做:
INSERT INTO TestDataTable
SELECT ID = IDENTITY(INT,1,1), Code, Description, ParentID FROM TempTable
我會說你有兩個選擇。首先是在目標表的數據定義語言中處理它。請參閱爲MS SQL Server編寫的代碼示例。
CREATE TABLE #A (
Id INT NOT NULL IDENTITY(1,1) PRIMARY KEY
, Code VARCHAR(10) NOT NULL)
CREATE TABLE #B (
Code VARCHAR(10) NOT NULL)
INSERT INTO #B VALUES ('alpha')
INSERT INTO #B VALUES ('beta')
INSERT INTO #B VALUES ('gamma')
INSERT INTO #B VALUES ('delta')
INSERT INTO #A (Code)
SELECT Code
FROM #B
SELECT *
FROM #A
DROP TABLE #A
DROP TABLE #B
如果不允許目標表的DDL來處理,那麼你可以完成你需要的方式被指定爲這樣的表,如果你知道它會是空的。
CREATE TABLE #A (
Id INT NOT NULL PRIMARY KEY
, Code VARCHAR(10) NOT NULL)
CREATE TABLE #B (
Code VARCHAR(10) NOT NULL)
INSERT INTO #B VALUES ('alpha')
INSERT INTO #B VALUES ('beta')
INSERT INTO #B VALUES ('gamma')
INSERT INTO #B VALUES ('delta')
INSERT INTO #A (Id, Code)
SELECT ROW_NUMBER() OVER (ORDER BY Code), Code
FROM #B
SELECT *
FROM #A
DROP TABLE #A
DROP TABLE #B
我絕對推薦第一種方法。它更簡單,您不必擔心處理代碼中的自動增量。
「TestDataTable」的模式是什麼? – Jon 2010-07-06 03:37:58