Actualizar clave principal en tablas MySQL

Mehvish Ashiq 15 febrero 2024
  1. Actualizar clave principal en tablas MySQL
  2. Suelte la clave principal existente y cree una nueva clave principal usando una columna diferente en MySQL
  3. Actualice el número de columnas involucradas en la construcción de la clave principal en MySQL
  4. Actualice la clave principal de MySQL cambiando su tipo de datos
Actualizar clave principal en tablas MySQL

Este tutorial enseña cómo actualizar la clave principal en tablas MySQL. Usaremos el comando ALTER para realizar cualquier cambio en la clave principal.

Actualizar clave principal en tablas MySQL

Hay varios escenarios en los que podemos actualizar la clave principal en las tablas de MySQL. Veamos cada uno de ellos a continuación.

  1. Suelte la clave principal existente y cree una nueva clave principal usando una columna diferente.
  2. Actualice el número de columnas involucradas en la construcción de la clave principal.
  3. Cambie el tipo de datos de la clave principal.

Podemos usar el comando ALTER que se demostrará de forma práctica más adelante en este tutorial para cambiar la clave principal.

Suelte la clave principal existente y cree una nueva clave principal usando una columna diferente en MySQL

Supongamos que tenemos una tabla de usuarios en la base de datos test cuya clave principal es el atributo ID. Por alguna razón, queremos soltarlo y construir una nueva clave principal usando la columna NOMBRE DE USUARIO.

Crear tabla de usuarios:

#create a table named 'users' in 'test' database
CREATE TABLE `test`.`users` (
  `ID` INT NOT NULL AUTO_INCREMENT,
  `USERNAME` VARCHAR(45) NOT NULL,
  `EMAIL` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`ID`));

Utilice la siguiente consulta para comprobar la definición de la tabla.

SHOW CREATE TABLE test.users;

Mostrará el siguiente resultado; sus resultados pueden diferir si usa una tabla diferente.

Producción:

actualizar la clave principal en las tablas mysql: definición de la tabla, primera parte

Para actualizar la clave principal de ID al campo USERNAME, primero debemos eliminar AUTO_INCREMENT del atributo ID; de lo contrario, generará un error.

Coloque AUTO_INCREMENT para el campo ID:

# Disable foreign key check
SET FOREIGN_KEY_CHECKS=0;
# Modify the `ID` attribute
ALTER TABLE test.users MODIFY COLUMN ID INT NOT NULL;
# Enable foreign key check
SET FOREIGN_KEY_CHECKS=1;

Utilice MOSTRAR CREAR TABLA test.users; para confirmar que se elimina AUTO_INCREMENT.

Producción:

actualizar la clave principal en las tablas mysql - definición de la tabla, segunda parte

Actualizar clave principal:

ALTER TABLE test.users DROP PRIMARY KEY, ADD PRIMARY KEY(USERNAME);

Utilice MOSTRAR CREAR TABLA test.users; de nuevo para asegurarse de que la clave principal es NOMBRE DE USUARIO.

Producción:

actualizar la clave principal en las tablas mysql - definición de la tabla, parte tres

Actualice el número de columnas involucradas en la construcción de la clave principal en MySQL

Seguimos adelante con la tabla de usuarios que creamos en el apartado anterior. La clave principal fue la columna NOMBRE DE USUARIO, que se puede verificar fácilmente mediante la siguiente consulta.

SHOW CREATE TABLE test.users;

Usamos el comando ALTER para actualizar la clave principal que ahora constará de dos columnas, ID y USERNAME.

ALTER TABLE test.users DROP PRIMARY KEY, ADD PRIMARY KEY(ID, USERNAME);

Podemos confirmar la clave principal actualizada mediante la siguiente consulta.

SHOW CREATE TABLE test.users;

Producción:

actualizar la clave principal en tablas mysql - definición de tabla parte cuatro

Actualice la clave principal de MySQL cambiando su tipo de datos

Aquí, creamos otra tabla y la llamamos usuario donde la clave principal es el campo ID del tipo INT.

CREATE TABLE `test`.`user` (
  `ID` INT NOT NULL AUTO_INCREMENT,
  `USERNAME` VARCHAR(45) NOT NULL,
  `EMAIL` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`ID`));

Podemos utilizar las siguientes consultas para actualizar el tipo de datos de INT a BIGINT de una clave principal existente.

SET FOREIGN_KEY_CHECKS=0;
ALTER TABLE test.users MODIFY COLUMN ID BIGINT NOT NULL AUTO_INCREMENT;
SET FOREIGN_KEY_CHECKS=1;

Confirme los cambios mediante una consulta que se proporciona a continuación.

SHOW CREATE TABLE test.user;

Producción:

actualizar la clave principal en tablas mysql - definición de tabla parte cinco

Actualizar la clave principal en la tabla MySQL no es difícil antes de establecer relaciones en la base de datos, pero se desaconseja mucho después de establecer las relaciones en la base de datos por las siguientes razones básicas.

  1. Si tuvo la idea de cambiar la clave principal en la base de datos en ejecución, probablemente haya elegido el campo incorrecto para la clave principal. Así que tenga mucho cuidado al seleccionar los campos como clave principal.

  2. Se le pedirá que descarte ese registro en el que está tratando de cambiar la clave principal. Puede que tenga que perder todas las relaciones de ese registro en particular.

    Si cambia la clave principal, debe agregar ese registro y crear relaciones nuevamente.

  3. Si cambia la clave principal de una columna a tres columnas, la nueva clave principal (que consta de tres columnas) debe usarse como clave externa en todas las demás tablas relacionadas. Recuerde, esto puede afectar el almacenamiento, el rendimiento y el diseño.

  4. Nunca se recomienda ningún cambio en la clave principal dentro de la base de datos, excepto si reconstruye la base de datos durante la MIGRACIÓN o la REORGANIZACIÓN DE ARCHIVOS. Pero debe tener mucho cuidado porque estas claves principales pueden usarse como claves externas en otras tablas.

Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook