忘了添加主键列标识(Forgot to add primary key column as Iden

2019-11-02 12:59发布

我创造了一个表像这样

    CREATE TABLE [dbo].[sydShopOrder](
    [rowNumber] [varchar](50) NULL,
    [firstName] [varchar](50) NULL,
    [lastName] [varchar](50) NULL,
    [employeeNumber] [varchar](50) NULL,
    [productID] [varchar](50) NULL,
    [shopID] [varchar](50) NULL,
    [location] [varchar](50) NULL,
    [address] [varchar](50) NULL,
    [department] [varchar](50) NULL,
    [datestamp] [date] NULL
) ON [PRIMARY]

我的本意是使[rowNumber]主键,使其identity与自动递增列。 但我忘了做。 而现在的数据库启动并运行在真实环境中。 我发现了这个bug很晚。 有没有什么办法,我可以解决这个问题? 让[rowNumber]身份和经销商的柱递增呢?

表的当前屏幕截图看起来是这样的

Answer 1:

您可以删除[rownumber]然后用身份加入

Alter Table [dbo].[sydShopOrder] Drop Column rownumber
Go
Alter Table [dbo].[sydShopOrder]
Add rownumber Int Identity(1, 1)
Go

如果你想填充标识字段现有的数据,最好创建另一个临时表,并保留所有记录[dbo].[sydShopOrder]在这。 之后truncate [dbo].[sydShopOrder] ,然后从该临时表中插入的值[dbo].[sydShopOrder]

CREATE TABLE #temp  ([firstName] [varchar](50) NULL,
    [lastName] [varchar](50) NULL,
    [employeeNumber] [varchar](50) NULL,
    [productID] [varchar](50) NULL,
    [shopID] [varchar](50) NULL,
    [location] [varchar](50) NULL,
    [address] [varchar](50) NULL,
    [department] [varchar](50) NULL,
    [datestamp] [date] NULL)

INSERT INTO #temp 
SELECT [firstName],[lastName],[employeeNumber],
       [productID], [shopID],[location],
       [address],[department],[datestamp]
FROM [dbo].[sydShopOrder]

TRUNCATE TABLE [dbo].[sydShopOrder]

INSERT INTO [dbo].[sydShopOrder]
SELECT * FROM #temp

下面是一个示例SQLFIDDLE



文章来源: Forgot to add primary key column as Identity