вставить в таблицу с идентификатором столбца - PullRequest
1 голос
/ 06 июля 2010

Я пытаюсь вставить столбцы из временной таблицы и хочу, чтобы столбец идентификатора увеличивался последовательно.Я использую следующий код, но ничего не вставляется:

INSERT INTO TestDataTable
SELECT  Code, Description, ParentID  FROM TempTable

Пожалуйста, скажите мне, как мне заставить это работать.

Ответы [ 2 ]

1 голос
/ 08 июля 2010

Я бы сказал, что у вас есть два варианта.Первый - это обработать это на языке определения данных вашей целевой таблицы.См. Этот пример кода, написанный для 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

Я определенно рекомендую первый метод.Это намного проще, и вам не нужно беспокоиться об обработке автоинкремента в коде.

1 голос
/ 06 июля 2010

Вам необходимо сделать идентификатор в столбце IDENTITY . Так что в вашем предложении select в заявлении, что-то вроде этого должно сделать:

INSERT INTO TestDataTable
SELECT ID = IDENTITY(INT,1,1), Code, Description, ParentID  FROM TempTable
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...