Tsql 插入到ID为列的表中

Tsql 插入到ID为列的表中,tsql,Tsql,我试图从临时表中插入列,并希望ID列按顺序递增。我正在使用以下代码,但未插入任何内容: INSERT INTO TestDataTable SELECT Code, Description, ParentID FROM TempTable 请告诉我如何让它工作。您需要将ID设置为一个。因此,在select into语句中,类似这样的操作应该: INSERT INTO TestDataTable SELECT ID = IDENTITY(INT,1,1), Code, Description

我试图从临时表中插入列,并希望ID列按顺序递增。我正在使用以下代码,但未插入任何内容:

INSERT INTO TestDataTable
SELECT  Code, Description, ParentID  FROM TempTable

请告诉我如何让它工作。

您需要将ID设置为一个。因此,在select into语句中,类似这样的操作应该:

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的模式是什么?