mysql - 如何将自动增量字段值设置为更高的数字?

标签 mysql sql

我在 SQL 中有一个名为 num 的列,我最初从 1 自动递增该列。我知道我可以使用以下方法从另一个值开始序列:

ALTER TABLE [myDatabase].[dbo].[myTable] AUTO_INCREMENT=500

现在已经存在的记录是什么?是否可以增加这些 num 值?不删除记录?

最佳答案

您无法更新身份列,但可以将数据移动到另一个位置,删除原始数据,然后将identity_insert设置为on,并使用更新后的incrimentor将数据移回。

SET NOCOUNT ON

-- Create table for test
CREATE TABLE #MyTable ( Id INT IDENTITY(1,1), Data INT )

INSERT INTO #MyTable ( Data ) VALUES ( 10 )
INSERT INTO #MyTable ( Data ) VALUES ( 20 )
INSERT INTO #MyTable ( Data ) VALUES ( 30 )

-- Store data in temp location
SELECT *
INTO #TempLocation
FROM #MyTable

-- Delete original data
DELETE #MyTable

-- Insert with updated id
SET IDENTITY_INSERT #MyTable ON
INSERT INTO #MyTable ( Id, Data )
SELECT Id + 500, Data
FROM #TempLocation

SET IDENTITY_INSERT #MyTable OFF

关于mysql - 如何将自动增量字段值设置为更高的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18255593/

相关文章:

SQL:如何获得每个数据库或每小时或...的执行查询数?

mysql - SQL - "No Unique Constraint Matching Given Keys"尽管存在主键

mysql - 如果最后一个事件仍在执行,如何设置 MySQL 事件不触发

java - 在java中使用mysql回滚事务

php - PDO 用户输入 MWE

php - bool 搜索运算符优化,尊重引用的术语

sql - `single-row subquery returns more than one row` 错误不清楚

php - Mysqli 准备好的语句在 SQL 中工作但不在我的应用程序中

php - MySQL SELECT from array of ids 其中一个是强制性的

sql - 如何在SQL中用单引号连接列值?