Php 它必须插入一个新的,让mysql自动增加id字段本身。这更清楚吗?无论如何,感谢您迄今为止的回答。:)这是默认行为。即使您添加了记录1-100,并删除了ID 55,自动递增计数也应设置为101。Rikudo Sennin是的,但他的问题是他不想删除和插入-

Php 它必须插入一个新的,让mysql自动增加id字段本身。这更清楚吗?无论如何,感谢您迄今为止的回答。:)这是默认行为。即使您添加了记录1-100,并删除了ID 55,自动递增计数也应设置为101。Rikudo Sennin是的,但他的问题是他不想删除和插入-,php,mysql,optimization,Php,Mysql,Optimization,它必须插入一个新的,让mysql自动增加id字段本身。这更清楚吗?无论如何,感谢您迄今为止的回答。:)这是默认行为。即使您添加了记录1-100,并删除了ID 55,自动递增计数也应设置为101。Rikudo Sennin是的,但他的问题是他不想删除和插入-他想使用更新(他只是不知道这是可能的:)他说他需要最清晰、最简单的方法来实现它=更新,但不像你写的——他想让专栏获得实际的自动增量id)哦,来吧!。。。当然,我刚才说过!你一开始读了我的问题吗?当然读了。但是你的问题不是100%清楚。请详细说明



它必须插入一个新的,让mysql自动增加id字段本身。这更清楚吗?无论如何,感谢您迄今为止的回答。:)这是默认行为。即使您添加了记录1-100,并删除了ID 55,自动递增计数也应设置为101。Rikudo Sennin是的,但他的问题是他不想删除和插入-他想使用更新(他只是不知道这是可能的:)他说他需要最清晰、最简单的方法来实现它=更新,但不像你写的——他想让专栏获得实际的自动增量id)哦,来吧!。。。当然,我刚才说过!你一开始读了我的问题吗?当然读了。但是你的问题不是100%清楚。请详细说明并澄清您的问题。好的,那么:我有一条记录,它被插入到数据库中,id为55/100。现在我希望它是记录101,但不要重新插入它(没有重复数据),更像是告诉mysql这个记录是它必须插入的新记录,让mysql自动增加id字段本身。这更清楚吗?无论如何,感谢您迄今为止的回答。:)这是默认行为。即使您添加了记录1-100,并删除了ID 55,自动递增计数也应设置为101。Rikudo Sennin是的,但他的问题是他不想删除和插入-他想使用更新(他只是不知道这是可能的:)他说他需要最清晰、最简单的方法来实现它=更新,但不像你写的——他想让专栏获得实际的自动增量id)你发布的最后一个代码片段,它的行为是否就像插入新行一样,这意味着mysql的内部“增量导师”会知道最后使用的id是101而不是100,就像以前一样?另外,你能简单地告诉我当桌子被锁上时会发生什么吗?它不能被写入或读取吗?感谢您的回答,并提前感谢您的下一个评论解释我所有这一切。干杯您好,这是完整的解决方案。这真的很简单-在执行事务/锁查询时,事务/锁阻止其他线程更新表。这意味着不存在表损坏的可能性,因为并没有人可以在您这样做时写入表。是的,就是这么简单。现在看看它的工作原理-简单的update语句
update****SET id=xx,其中id=yy
,其中xx是select查询,它从mysql内部表中获取表****的实际(下一个)自动增量值(有些人认为这样的查询是通过每次插入在内部完成的)在锁定期间,用户是否能够读取表中的数据?(这纯粹是好奇,因为查询所需的时间比打扰任何人所需的时间都少)。而且,通过使用查询,mysql会注意到自动递增id的新值,对吗?非常感谢你的回答,我希望这能很好地解决它!干杯,伙计!是的,用户可以从表中读取数据-这只是防止其他用户更新表:)您发布的最后一个代码片段,它的行为是否就像插入新行一样,这意味着mysql的内部“incrementor”将知道使用的最后一个id是101,而不是像以前一样的100?另外,你能简单地告诉我当桌子被锁上时会发生什么吗?它不能被写入或读取吗?感谢您的回答,并提前感谢您的下一个评论解释我所有这一切。干杯您好,这是完整的解决方案。这真的很简单-在执行事务/锁查询时,事务/锁阻止其他线程更新表。这意味着不存在表损坏的可能性,因为并没有人可以在您这样做时写入表。是的,就是这么简单。现在看看它的工作原理-简单的update语句
update****SET id=xx,其中id=yy
,其中xx是select查询,它从mysql内部表中获取表****的实际(下一个)自动增量值(有些人认为这样的查询是通过每次插入在内部完成的)在锁定期间,用户是否能够读取表中的数据?(这纯粹是好奇,因为查询所需的时间比打扰任何人所需的时间都少)。而且,通过使用查询,mysql会注意到自动递增id的新值,对吗?非常感谢你的回答,我希望这能很好地解决它!干杯,伙计!是的,用户可以从表中读取数据-这只会阻止其他用户更新表:)
START TRANSACTION;
UPDATE %table% SET id = (SELECT Auto_increment FROM information_schema.tables
LOCK TABLES %table% WRITE;
UPDATE %table% SET id = (SELECT Auto_increment FROM information_schema.tables
UPDATE `table`
SET `field1`='value1', `field2` = 'value2', `id`=LAST_INSERTED_ID()+1
WHERE `id` = 49;