在insert上的SQL中获取uniqueidentifier自动生成的问题

时间:2014-12-13 18:56:56

标签: sql sql-server uniqueidentifier auto-generate insert-into

我正在尝试将数据从一个表插入到另一个表中。表1没有唯一标识符,但表2没有。我试图使用NEWID()插入,但我收到语法错误。有人可以告诉我我做错了吗?

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

1 个答案:

答案 0 :(得分: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列设置为Identity将自动生成每行的UNIQUE标识号,您不必担心填充。该数字为增量,默认情况下,每行增加1,从1开始。

您还可以通过将[ID]列定义为[ID] INTEGER IDENTITY(1000, 2)来定义起始编号和增量值,这将使起始值为1000,增量将为2(但这只是FYI)。< / p>