我正在尝试从临时表中插入列,并希望ID列按顺序递增。我正在使用以下代码,但没有插入任何内容:
INSERT INTO TestDataTable
SELECT Code, Description, ParentID FROM TempTable
请告诉我如何才能让它发挥作用。
答案 0 :(得分:1)
您需要将ID设为IDENTITY column。所以在你的select into语句中,这样的事情应该做:
INSERT INTO TestDataTable
SELECT ID = IDENTITY(INT,1,1), Code, Description, ParentID FROM TempTable
答案 1 :(得分:1)
我会说你有两种选择。第一种是在目标表的数据定义语言中处理它。请参阅为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
我绝对推荐第一种方法。它更简单,您不必担心在代码中处理自动增量。