我已创建表并希望更改该表。我想添加一个主键和identity(1,1)
。
我可以应用主键,但应用标识会出错。什么遗失了?
ALTER TABLE MyTable ADD PRIMARY KEY (Id)
如何使用主键添加标识?
答案 0 :(得分:20)
您不能更改数据库中现有列的定义,以添加IDENTITY
属性(也不能删除它)。您必须使用IDENTITY
属性创建 new 列:
ALTER TABLE MyTable ADD NewID int IDENTITY(1,1) not null
不幸的是,您无法将旧ID值分配给此新列。如果要分配ID值,然后让IDENTITY
接管,最好创建一个具有所需结构的新表,然后从旧表中导入数据(可以使用{{3将值分配给IDENTITY
列。)
如果需要,您将删除旧表并重命名新表。
答案 1 :(得分:0)
我发现这是因为我正在寻找相同的答案,以编程方式将IDENTITY分配给SQL Server 2019中的表。我的情况是,我尝试将其应用于的表是一个导入的表,其中我正在尝试的列将IDENTITY应用于从中导入IDENTITY的表中,以便满足IDENTITY的要求-每个值都是唯一的,并且具有正确的数据类型。 这项研究和其他研究帮助我了解到我无法以编程方式进行此操作。
但这并不能阻止我实际完成结果。无需通过编程,而是可以在SSMS的设计视图中打开表,并在其中分配IDENTITY,只要种子和标识间隔与表的原始设置匹配即可。显然,如果涉及到很多表,不是一个快速的解决方案,但是如果将IDENTITY值用作其他关联表中的外键,则可以保护IDENTITY值的完整性。