sql >> Base de Datos >  >> RDS >> Mysql

¿Cuál es el nombre de restricción predeterminado en MySQL?

Problema:

Desea conocer los nombres predeterminados de las restricciones en una tabla en MySQL.

Ejemplo:

En nuestra base de datos, creamos dos tablas, country y student , con las siguientes restricciones:PRIMARY KEY (el id de la columna en las tablas country y student ), FOREIGN KEY (la columna country_id en la tabla student ), DEFAULT (el nombre de la columna en la tabla student ), UNIQUE (la columna name en la tabla country y la columna personal_number en la tabla student ), y CHECK (la columna age en la tabla student ).

Solución:

CREATE TABLE country (
id int NOT NULL primary key,
name varchar(100) UNIQUE
);

CREATE TABLE student (
id int NOT NULL primary key,
name varchar(100) NOT NULL DEFAULT 'unknown',
personal_number varchar(100) UNIQUE,
age int CHECK(age>15),
country_id int,
FOREIGN KEY(country_id) REFERENCES country(id)
);

Veamos cómo MySQL nombra las restricciones de estas tablas de forma predeterminada. Usa esta consulta para verlos:

SELECT TABLE_NAME, CONSTRAINT_TYPE, CONSTRAINT_NAME
FROM information_schema.table_constraints
WHERE table_name='country' OR table_name='student';

Aquí está el resultado:

NOMBRE_TABLA CONSTRAINT_TYPE CONSTRAINT_NAME
país CLAVE PRINCIPAL PRIMARIO
país ÚNICO nombre
estudiante CLAVE PRINCIPAL PRIMARIO
estudiante ÚNICO número_personal
estudiante LLAVE EXTRANJERA estudiante_ibfk_1
estudiante COMPROBAR student_chk_1

Discusión:

Cuando creamos nuestras tablas, establecemos restricciones para algunas columnas. Sin embargo, no especificamos los nombres de estas restricciones, por lo que se nombran de forma predeterminada en MySQL. En MySQL, los tipos de restricciones predeterminados son PRIMARY KEY , FOREIGN KEY , UNIQUE y CHECK . ¿Cómo se generan los nombres predeterminados para las restricciones?

La PRIMARY KEY constraint simplemente se llama PRIMARY , porque siempre hay una clave principal en una tabla. Hay dos restricciones llamadas PRIMARY en el resultado anterior, pero las tablas a las que pertenecen son diferentes.

Para FOREIGN KEY , el nombre sigue la convención:el nombre de la tabla, un guión bajo (‘_ '), 'ibfk ', otro guión bajo ('_ '), y un número. Para nuestro ejemplo, es student_ibfk_1 en la tabla student .

El nombre predeterminado para un CHECK La restricción es similar a la de la clave foránea. Comienza con el nombre de la tabla, un guión bajo (‘_ ’), ‘chk ', otro guión bajo ('_ '), y un número. Para nuestro ejemplo, es student_chk_1 en la tabla student .

El nombre predeterminado de un UNIQUE la restricción es el nombre de la columna en sí. Para nuestro ejemplo, es personal_number en la tabla student . Cuando hay varias columnas con el UNIQUE restricción, utiliza el nombre de la primera columna en la definición de la restricción.