我有SQL Server数据库,我想改变标识列,因为它开始了 有一个大数字10010,它与另一个表相关,现在我有200条记录,我想在记录增加之前修复这个问题。
更改或重置该列的最佳方法是什么?
我有SQL Server数据库,我想改变标识列,因为它开始了 有一个大数字10010,它与另一个表相关,现在我有200条记录,我想在记录增加之前修复这个问题。
更改或重置该列的最佳方法是什么?
当前回答
DBCC CHECKIDENT(table_name, RESEED, value)
Table_name =给出要重置的表的值
Value =初始值为0,以1开始单位列
其他回答
我已经解决了这个问题,首先使用DBCC,然后使用插入。例如,如果你的桌子是
首先在表中设置新的当前ID Value为NEW_RESEED_VALUE
MyTable { IDCol, 可乐, colB }
DBCC CHECKIDENT('MyTable', RESEED, NEW_RESEED_VALUE)
然后你可以使用
insert into MyTable (colA, ColB) select colA, colB from MyTable
这将复制所有记录,但使用新的IDCol值作为NEW_RESEED_VALUE开始。然后,在删除/移动外键引用(如果有)后,可以删除ID值较高的重复行。
我有类似的问题,我需要更新一些id,我所做的是(我需要增加他们10k):
set identity_insert YourTable ON
INSERT INTO YourTable
([ID]
,[something1]
,[something2]
,[something3])
SELECT
([ID] + 10000)
,[something1]
,[something2]
,[something3])
FROM YourTable
WHERE something1 = 'needs updeted id'
AND something2 = 'some other condition'
set identity_insert YourTable OFF
DELETE FROM YourTable
WHERE ID >= 'your old ID From'
AND ID <= 'Your old ID To'
就是这样。希望你能理解这个逻辑,在我的情况下,还有PK-FK键与其他表连接,这意味着我必须更新它们,在我可以从“YourTable”原始行删除之前。
我知道这个问题已经有答案了,我只是想以SQL查询为例,
尝试使用DBCC CHECKIDENT:
DBCC CHECKIDENT ('YourTable', RESEED, 1);
如果你的问题答对了,你想做的是
update table
set identity_column_name = some value
让我告诉你,这不是一个简单的过程,使用它是不可取的,因为它可能有一些相关的外键。
但这里有一些步骤,请采取备份表
步骤1-选择表的设计视图
步骤2-关闭标识列
现在可以使用更新查询了。
现在重做第1步和第2步,并打开标识列
参考
不允许更新: 但是你可以
用正确的键插入新数据 删除注册
Import:所有字段必须在insert into中声明 示例:reg 5必须更改为4:
set IDENTITY_INSERT Gastos_ReclamacionCausa on
insert into Gastos_ReclamacionCausa
(IDCausa,TextoCombo,Asunto,Mensaje,EsBaja)
select 4,TextoCombo,Asunto,Mensaje,EsBaja from Gastos_ReclamacionCausa where idcausa=5
delete from Gastos_ReclamacionCausa where idcausa = 5
set IDENTITY_INSERT Gastos_ReclamacionCausa off