为什么SQL Server标识列是不可变的?

时间:2013-11-07 23:15:23

标签: sql-server

我正在尝试通过修改现有数据库来设置新数据库。我看到,如果我尝试执行更新语句来修改主键,sql server将给出以下错误:

Cannot update identity column 'columnname'.

我可以看到我将不得不解决这个问题,但我想知道,为什么SQL Server首先会有这个限制?它允许我们插入标识列确定,然后为什么不更新?

1 个答案:

答案 0 :(得分:1)

标识列通常用作外键。也就是说,还有其他表和数据库存储标识列值而不是重复行。如果更新标识列,则所有外键都将中断,因此请勿执行此操作。即使您认为它不是真正的外键,或者您确定可以更新所有其他数据库,这就是SQL的工作原理,所以不要试图“解决”它。

如果要设置新数据库,请在新数据库中创建新密钥,不要更改现有密钥。