resetAutoincrement.sql

  1. /*
  2.   Después de reiniciar autoincremento el procedimiento queryDeletedIds()
  3.   es muchísimo más rápido
  4.  
  5.   ¡PRECAUCIÓN!
  6.   Sólo se puede aplicar a tablas sin referencias externas
  7.  
  8.   Ejemplo:
  9.   CALL resetAutoincrement('nombre_tabla', 'campo_id');
  10. */
  11. DELIMITER $$
  12. DROP PROCEDURE IF EXISTS resetAutoincrement$$
  13. CREATE PROCEDURE resetAutoincrement(
  14. IN inTableName VARCHAR(64),
  15. IN inIdField VARCHAR(32)
  16. ) READS SQL DATA
  17. BEGIN
  18. SET @query := CONCAT('ALTER TABLE ', inTableName,
  19. ' DROP COLUMN ', inIdField, ', DROP PRIMARY KEY;');
  20. PREPARE stmt FROM @query;
  21. EXECUTE stmt;
  22. DEALLOCATE PREPARE stmt;
  23.  
  24. SET @query := CONCAT('ALTER TABLE ', inTableName,
  25. ' ADD COLUMN ', inIdField, ' INT NOT NULL AUTO_INCREMENT FIRST,',
  26. ' ADD PRIMARY KEY (', inIdField, ');');
  27. PREPARE stmt FROM @query;
  28. EXECUTE stmt;
  29. DEALLOCATE PREPARE stmt;
  30. END$$
  31. DELIMITER ;
  32.  

Proinf.net