Skip to content

Instantly share code, notes, and snippets.

@meysampg
Created September 5, 2019 16:24
Show Gist options
  • Save meysampg/0f8458ebd36ee99c2aa63bb6b2b12656 to your computer and use it in GitHub Desktop.
Save meysampg/0f8458ebd36ee99c2aa63bb6b2b12656 to your computer and use it in GitHub Desktop.
Reset Primary Key of a table
ALTER TABLE `test` DROP `id`;
ALTER TABLE `test` AUTO_INCREMENT = 1;
ALTER TABLE `test` ADD `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;
@meysampg
Copy link
Author

meysampg commented Sep 5, 2019

Also, this bash file generate a query which reset the PK by a cross join:

#!/usr/bin/env bash

TABLE_NAME=$1
PK_COLUMN_OF_TABLE=$2

echo "UPDATE $TABLE_NAME CROSS JOIN (SELECT @cur := 0) AS init SET $TABLE_NAME.$PK_COLUMN_OF_TABLE = @cur := @cur+1;"
echo "SET @max = (SELECT MAX($PK_COLUMN_OF_TABLE) FROM $TABLE_NAME);"
echo "SET @query = CONCAT(\"ALTER TABLE $TABLE_NAME AUTO_INCREMENT = \", @max);"
echo "PREPARE STATEMENT FROM @query;"
echo "EXECUTE STATEMENT;"
echo "DEALLOCATE PREPARE STATEMENT;"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment