gpt4 book ai didi

sql-server - 使用identity_insert后如何自动重新播种?

转载 作者:行者123 更新时间:2023-12-02 03:26:59 25 4
gpt4 key购买 nike

我最近从 PostgreSQL 数据库迁移到 SQL Server 数据库。要切换数据,我必须启用 IDENTITY_INSERT。我们发现,在任何表中执行插入操作时,由于重复的标识值(设置为主键),我遇到了各种奇怪的错误。

我有很多 table 。自动重新播种每个表的标识以使其位于 max(RID) 之后的最简单方法是什么?

最佳答案

使用 this link 中的信息与 SQL 函数结合使用,从需要重置的每个表中获取 max(RID)。例如,如果您想在 25000 处启动主键种子,请使用以下代码 (StartSeedValue - 1)

DBCC CHECKIDENT('myTable', RESEED, 24999)

所以综合起来,你应该得到这样的结果

DECLARE @maxVal INT
SELECT @maxVal = ISNULL(max(ID),0)+1 from mytable
DBCC CHECKIDENT('mytable', RESEED, @maxVal)

抱歉,伪代码,自从我编写 SQL 函数以来已经有一段时间了:)

编辑:

感谢您的帮助,将 INTEGER 更改为 INT

USE YourDBName
GO
SELECT *
FROM sys.Tables
GO

这将为您提供数据库中所有用户表的列表。使用此查询作为“循环”,这应该允许重置所有表上的种子。

关于sql-server - 使用identity_insert后如何自动重新播种?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2923855/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com