Cómo usar una restricción única en SQLite

Cómo usar una restricción única en SQLite
En SQLite, existen diferentes restricciones, que restringen los datos de la columna por algunas reglas, cuando los datos se insertan, se actualizan o modifican. Algunas de las restricciones comunes de las bases de datos que son compatibles con SQLite son únicas, clave primaria, clave extranjera, cheque y no nulas.

SQLite es un RDBMS, que se utiliza para administrar los datos de la base de datos, que se coloca en las filas y columnas de la tabla. Esta reseña nos ayuda a comprender qué es una restricción única en SQLite, así como en cómo funciona en SQLite.

¿Cuál es la restricción única en SQLite?

Una restricción única asegura que los datos en la columna deben ser únicos, lo que significa que no hay campos de la misma columna que contienen valores similares. Por ejemplo, creamos una columna, correo electrónico y la definimos con la restricción única para que garantice que ningún correo electrónico insertado en la columna sea el mismo que el otro registro de la columna.

¿Cuál es la diferencia entre la restricción clave única y principal en SQLite?

Ambas restricciones, clave primaria y única aseguran que no se insertara ninguna entrada duplicada en la tabla, pero la diferencia es; La tabla debe contener solo una clave principal, mientras que la restricción única se puede usar para más de una columna en la misma tabla.

Cómo se definirá la restricción única en SQLite

La restricción única se puede definir en la columna única o en las múltiples columnas en SQLite.

Cómo se definirá la restricción única a una columna

Una restricción única se puede definir como una columna, mediante la cual puede garantizar que ningún valores similares pueda ingresar en ningún campo de esa columna. La sintaxis general de definir la restricción única en una columna es:

Crear tabla table_name (column1 dataType único, column2 dataType);

La explicación de esto es:

  • Use la cláusula Crear tabla para crear una tabla y reemplazar la tabla_name
  • Definir un nombre de columna con su tipo de datos reemplazando la columna1 y el tipo de datos
  • Use la cláusula única en una columna que va a definir con esta restricción
  • Defina las otras columnas con sus tipos de datos

Para comprender esta sintaxis, considere un ejemplo de creación de una tabla para estudiantes_data que tienen dos columnas, una es de std_id y la otra es de st_name, fueron definir la columna, std_id, con la restricción única para que ninguno de los estudiantes pueda haber tenido STD_ID similar como:

Crear tabla Students_Data (STD_ID Integer único, texto STD_NAME);

Inserte los valores usando:

Insertar en valores de studing_data (1, 'John'), (2, 'Pablo');

Ahora, agregaremos otro nombre de estudiante donde el STD_ID es 1:

Insertar en valores de studing_data (1, 'Hannah');

Podemos ver desde la salida, generó el error de insertar el valor de std_id porque se definió con la restricción única, lo que significa que ningún valor puede duplicarse con los otros valores de esa columna.

¿Cómo se define la restricción única para múltiples columnas?

Podemos definir múltiples columnas con la restricción única, lo que asegura que no haya duplicación de los datos insertados en todas las filas al mismo tiempo. Por ejemplo, si tenemos que elegir ciudades para un viaje a tres grupos de personas (A, B y C), no podemos asignar la misma ciudad a los tres grupos, esto se puede hacer utilizando la restricción única.

Por ejemplo, estos tres escenarios pueden ser posibles:

Grupo A Grupo_b Grupo_c
Florida Florida Bostón
Nueva York Florida Florida
Florida Florida Florida

Pero el siguiente escenario no es posible si estamos utilizando las restricciones únicas:

Grupo A Grupo_b Grupo_c
Florida Florida Florida

La sintaxis general del uso de la restricción única a las múltiples columnas es:

Crear tabla table_name (column1 dataType, column2, único (columna1, columna2));

La explicación de esto es:

  • Use la cláusula Crear tabla para crear una tabla y reemplazar la tabla_name con su nombre
  • Definir un nombre de columna con su tipo de datos reemplazando la columna1 y el tipo de datos
  • Use la cláusula única y escriba los nombres de las columnas en () que va a definir con esta restricción

Para comprender esto, consideraremos el ejemplo anterior y ejecutaremos el siguiente comando para crear una tabla de trip_data:

Crear tabla Trip_data (Group_A Text, Group_B Text, Group_C Text, Unique (Group_A, Group_B, Group_C));

Insertaremos los valores de asignar sus ciudades:

Insertar en valores trip_data ('Florida', 'Florida', 'Boston'), ('Nueva York', 'Florida', 'Florida'), ('Florida', 'Florida', 'Florida');

Ahora, insertaremos la misma ciudad en todas las columnas de Trip_Data:

Insertar en valores trip_data ('Florida', 'Florida', 'Florida');

Podemos ver desde la salida, no se permite la duplicación de los datos en todas las columnas que están definidas por la restricción única y el error generado de la restricción única falló.

Cómo agregar la restricción única a la tabla existente

En SQLite, podemos agregar la restricción utilizando el comando alter, por ejemplo, tenemos una tabla studings_data con columnas std_id, std_name, queremos agregar una restricción std_id a la tabla, standers_data:

  • Use el comando "Pragma Extraño Keys = OFF" para desactivar las restricciones de la clave extranjera
  • Use el comando "Comenzar la transacción";
  • Use el comando "alter tabla table_name renombre a Old_table;" para cambiar el nombre de la tabla real
  • Cree una tabla nuevamente con el nombre anterior, pero al definir la columna esta vez, también defina las restricciones únicas
  • Copie los datos de la tabla anterior (cuyo nombre se cambia) a la nueva tabla (que tiene el nombre anterior)
  • Eliminar la primera tabla (cuyo nombre fue cambiado)
  • Use "Comprometer"
  • Use el comando "Pragma Extraño Keys = ON", en las limitaciones de las claves extranjeras
Comenzar la transacción;
Alter table students_data renombre a new_students_data;
Crear tabla Students_Data (ID Integer no NULL Único, texto de nombre no nulo, Integer de asistencia no nulo);
Insertar en students_data select * de new_students_data;
Table de sueldo new_students_data;
COMPROMETERSE;
Pragma extranjero_keys = on;

Cómo soltar la restricción única a la tabla existente

Al igual que otras bases de datos, no podemos eliminar la restricción utilizando los comandos de caída y alter, para eliminar las restricciones únicas que debemos seguir el mismo procedimiento que optamos por agregar la restricción a una tabla existente y redefinir la estructura de la tabla.

Considere nuevamente el ejemplo anterior y elimine las restricciones únicas:

Pragma extranjero_keys = apagado;
Comenzar la transacción;
Alter table students_data renombre a new_students_data;
Crear tabla Students_Data (ID Integer no nulo, texto de nombre no nulo, Integer de asistencia no nulo);
Insertar en students_data select * de new_students_data;
Table de sueldo new_students_data;
COMPROMETERSE;
Pragma extranjero_keys = on;

Conclusión

La restricción única se usa en las bases de datos para restringir la duplicación de los valores insertados en los campos de la tabla al igual que la restricción clave principal, pero hay una diferencia entre ambos; Una tabla solo puede tener una clave principal, mientras que una tabla puede tener columnas de clave únicas más de una. En este artículo, discutimos qué es una restricción única y cómo se puede usar en SQLite con la ayuda de ejemplos.