要实现删除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;