要实现删除ID为81的记录后,后续ID自动前移以保证顺序完整,需要执行以下步骤:
首先删除ID为81的记录
然后更新所有大于81的ID,使它们减1
最后重置自增ID值
以下是完整的SQL操作:
-- 删除记录并重新排序ID的完整预处理语句 SET @delete_id = 81; -- 删除记录 DELETE FROM lys_article WHERE id = @delete_id; DELETE FROM lys_all_content WHERE id = @delete_id; -- 更新ID SET @sql_update1 = 'UPDATE lys_article SET id = id - 1 WHERE id > ?'; PREPARE stmt1 FROM @sql_update1; EXECUTE stmt1 USING @delete_id; DEALLOCATE PREPARE stmt1; SET @sql_update2 = 'UPDATE lys_all_content SET id = id - 1 WHERE id > ?'; PREPARE stmt2 FROM @sql_update2; EXECUTE stmt2 USING @delete_id; DEALLOCATE PREPARE stmt2; -- 重置自增ID SET @sql_reset1 = CONCAT('ALTER TABLE lys_article AUTO_INCREMENT = ', (SELECT MAX(id)+1 FROM lys_article)); PREPARE stmt3 FROM @sql_reset1; EXECUTE stmt3; DEALLOCATE PREPARE stmt3; SET @sql_reset2 = CONCAT('ALTER TABLE lys_all_content AUTO_INCREMENT = ', (SELECT MAX(id)+1 FROM lys_all_content)); PREPARE stmt4 FROM @sql_reset2; EXECUTE stmt4; DEALLOCATE PREPARE stmt4;