Azure sql database 如何在SQLAzure中更新标识列?可能吗?

Azure sql database 如何在SQLAzure中更新标识列?可能吗?,azure-sql-database,Azure Sql Database,我有以下代码: ALTER TABLE FishSticks ADD MyNewIdentityColumnId INT IDENTITY(1,1) NOT NULL SET IDENTITY_INSERT FishSticks ON UPDATE FishSticks SET MyNewIdentityColumnId = MyOldColumnId 但是它说: 无法更新标识列“MyNewIdentityColumnId” 我想这是因为SQLAzure,但我在谷歌搜索方面没有太大成功。

我有以下代码:

ALTER TABLE FishSticks
ADD MyNewIdentityColumnId INT IDENTITY(1,1) NOT NULL

SET IDENTITY_INSERT FishSticks ON

UPDATE FishSticks 
SET MyNewIdentityColumnId = MyOldColumnId
但是它说:

无法更新标识列“MyNewIdentityColumnId”


我想这是因为SQLAzure,但我在谷歌搜索方面没有太大成功。似乎在保存数据的同时将列更改为标识是一个巨大的困难。

我从Herve Roggero那里找到了这一点,他基本上给出了一种方法,关闭ID,然后添加行,然后重新打开ID。

设置标识\u INSERT仅适用于插入,并且该错误不特定于SQL Azure。在SQL Server/Express上也会出现同样的错误


要解决这个问题,请将IDENTITY\u INSERT设置为ON,重新插入现有行中的所有列值,该行的IDENTITY值要替换为新值,将IDENTITY\u INSERT设置为OFF,然后删除前一行。

我认为他的示例有效,因为他在插入数据,而我在更新数据。另一种方法,同样,是将表完全复制到新表(比如FishSticks2),在插入期间将MyNewIdentityColumnId设置为MyOldColumnId,删除原始表,并将FishSticks2重命名为FishSticks。只有在使用完整插入命令(即包括所有列名)的情况下,它才适用于Azure。