2

Я пытаюсь вставить данные из одной таблицы в другую таблицу. Таблица 1 не имеет уникального идентификатора, но Table2 делает. Я попытался вставить, используя NEWID(), но я получаю синтаксическую ошибку. Может кто-нибудь, пожалуйста, скажите мне, что я делаю неправильно?Проблемы с получением uniqueidentifier auto generate в SQL на вставке

INSERT INTO Table2 (NEWID(), [Item Description], [Item Cost]) 
SELECT Description, Cost FROM Table1 
WHERE Id = '1' 

ответ

3

В случае Table2 еще не создан, Вы можете использовать этот запрос:

SELECT 
    NEWID() AS [ID] 
    ,Description AS [Item Description] 
    ,Cost AS [Item Cost] 
INTO Table2 
FROM Table1 
WHERE Id = '1' 

Но, в случае, если уже была создана схема для таблицы 2, и она имеет столбец для идентификатора, то вы можете использовать:

INSERT INTO Table2 ([ID], [Item Description], [Item Cost]) 
SELECT 
    NEWID() 
    , Description 
    , Cost 
FROM Table1 
WHERE Id = '1' 

Но если вы еще не создали схему для Table2 еще, то я рекомендую использовать следующий код для создания и схемы для таблицы и заполнить данные в нем, используя данные от Table1.

CREATE TABLE Table2 (
    [ID] INT Identity 
    ,[Item Description] AS NVARCHAR(MAX) 
    ,[Item Cost] AS NUMERIC(18, 2)) 

INSERT INTO Table2([Item Description] , [Item Cost]) 
SELECT 
    Description 
    , Cost 
FROM Table1 
WHERE Id = '1' 

Установка столбца ID, как Идентичность будет автоматически генерировать уникальный идентификационный номер для каждой строки, которые вам не придется беспокоиться о заполнении. Число инкрементально и по умолчанию увеличивается на 1 для каждой строки, начиная с 1.

Вы также можете определить начальный номер и инкрементное значение, указав столбец [ID] как [ID] INTEGER IDENTITY(1000, 2), и это сделает начальное значение 1000, а приращение будет 2 (но это только FYI).

+0

имеет смысл, попробуй это сейчас – nate

+0

@nate Я просто добавлял эту деталь в свой ответ. Еще один комментарий. –

+0

Это сработало. Большое спасибо! – nate

Смежные вопросы