SQLite: clave principal

Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.

SQLite: clave principal

Este tutorial de SQLite explica cómo Crear, agregar y eliminar claves primarias En SQLite, con sintaxis y ejemplos.

¿Qué es una clave principal en SQLite?

En SQLite, una clave principal es un campo único o una combinación de campos que define de forma única un registro. Una tabla solo puede tener una clave primaria.

propina: Mientras que los estándares SQL-89 y SQL-92 no permiten valores NULL en claves primarias, SQLite sí permite valores NULL en algunos casos. Recomendamos enfáticamente no usar valores NULL en claves primarias.

Crear una clave principal (sentencia CREATE TABLE)

Las claves primarias se pueden crear al ejecutar la instrucción CREATE TABLE en SQLite.

sintaxis

La sintaxis para crear una clave principal en SQLite usando la instrucción CREATE TABLE es:

CREATE TABLE table_name
(
  column1 datatype [ NULL | NOT NULL ],
  column2 datatype [ NULL | NOT NULL ],
  ...

  CONSTRAINT constraint_name PRIMARY KEY (pk_col1, pk_col2, ... pk_col_n)
);

o

CREATE TABLE table_name
(
  column1 datatype CONSTRAINT constraint_name PRIMARY KEY,
  column2 datatype [ NULL | NOT NULL ],
  ...
);

table_name El nombre de la tabla que desea crear. column1, column2 Las columnas que desea crear en la tabla. constrict_name El nombre de la clave principal. pk_col1, pk_col2, … pk_col_n Las columnas que componen la clave principal.

ejemplo

Veamos un ejemplo de cómo crear una clave principal usando la sentencia CREATE TABLE en SQLite. Comenzaremos con uno muy simple, donde nuestra clave principal contiene solo una columna.

Por ejemplo:

CREATE TABLE employees
( employee_id INTEGER,
  last_name VARCHAR NOT NULL,
  first_name VARCHAR,
  hire_date DATE,
  CONSTRAINT employees_pk PRIMARY KEY (employee_id)
);

En este ejemplo, creamos una clave principal en la tabla de empleados denominada employee_pk. Contiene solo una columna: la columna employee_id.

Podemos usar una sintaxis alternativa y crear la misma clave principal de la siguiente manera:

CREATE TABLE employees
( employee_id INTEGER PRIMARY KEY,
  last_name VARCHAR NOT NULL,
  first_name VARCHAR,
  hire_date DATE
);

Ambas sintaxis son válidas cuando se crea una clave principal con un solo campo.

Si crea una clave principal que consta de 2 o más columnas, solo puede usar la primera sintaxis para definir la clave principal al final de la instrucción CREATE TABLE.

Por ejemplo:

CREATE TABLE customers
( last_name VARCHAR NOT NULL,
  first_name VARCHAR NOT NULL,
  address VARCHAR,
  CONSTRAINT customers_pk PRIMARY KEY (last_name, first_name)
);

Este ejemplo crea una clave principal en la tabla de clientes llamada clients_pk que consta de la combinación de las columnas last_name y first_name. Por lo tanto, cada combinación de last_name y first_name debe ser única dentro de la tabla de clientes.

añadir clave principal

Si su tabla ya existe y desea agregar la clave principal más adelante, no puede usar la instrucción ALTER TABLE para crear la clave principal. En su lugar, debe crear una nueva tabla con la clave principal y copiar los datos en esta nueva tabla.

sintaxis

La sintaxis para agregar una clave principal a una tabla en SQLite es:

PRAGMA foreign_keys=off;

BEGIN TRANSACTION;

ALTER TABLE table_name RENAME TO old_table;

CREATE TABLE table_name
(
  column1 datatype [ NULL | NOT NULL ],
  column2 datatype [ NULL | NOT NULL ],
  ...
  CONSTRAINT constraint_name PRIMARY KEY (pk_col1, pk_col2, ... pk_col_n)
);

INSERT INTO table_name SELECT * FROM old_table;

COMMIT;

PRAGMA foreign_keys=on;

table_name El nombre de la tabla a modificar. Esta es la tabla donde desea agregar la clave principal. old_table El nombre de la tabla original que quedará después de crear una nueva tabla y agregar una clave principal. constrict_name El nombre de la clave principal. pk_col1, pk_col2, … pk_col_n Las columnas que componen la clave principal.

ejemplo

Veamos un ejemplo de cómo agregar una clave principal a una tabla existente en SQLite. Digamos que ya tenemos una tabla de empleados con las siguientes definiciones:

CREATE TABLE employees
( employee_id INTEGER,
  last_name VARCHAR NOT NULL,
  first_name VARCHAR,
  hire_date DATE
);

Queremos agregar una clave principal a la tabla de empleados que contiene employee_id. Podemos ejecutar los siguientes comandos:

PRAGMA foreign_keys=off;

BEGIN TRANSACTION;

ALTER TABLE employees RENAME TO old_employees;

CREATE TABLE employees
(
  employee_id INTEGER,
  last_name VARCHAR NOT NULL,
  first_name VARCHAR,
  hire_date DATE,
  CONSTRAINT employees_pk PRIMARY KEY (employee_id)
);

INSERT INTO employees SELECT * FROM old_employees;

COMMIT;

PRAGMA foreign_keys=on;

En este ejemplo, hemos creado una clave principal en la tabla de empleados denominada employee_pk, que consta de la columna employee_id. La tabla original seguirá existiendo en la base de datos denominada old_employees. Una vez que haya confirmado que la tabla y los datos de sus empleados son los esperados, puede eliminar la tabla old_employees.

DROP TABLE old_employees;

eliminar clave principal

En SQLite, las claves principales no se pueden descartar mediante la instrucción ALTER TABLE. En su lugar, debe crear una nueva tabla con la clave principal eliminada y copiar los datos en esta nueva tabla.

sintaxis

La sintaxis para eliminar una clave principal de una tabla en SQLite es:

PRAGMA foreign_keys=off;

BEGIN TRANSACTION;

ALTER TABLE table_name RENAME TO old_table;

CREATE TABLE table_name
(
  column1 datatype [ NULL | NOT NULL ],
  column2 datatype [ NULL | NOT NULL ],
  ...
);

INSERT INTO table_name SELECT * FROM old_table;

COMMIT;

PRAGMA foreign_keys=on;

table_name El nombre de la tabla a modificar. Esta es la tabla de la que desea eliminar la clave principal. old_table El nombre de la tabla original que quedará después de que se cree la nueva tabla con la clave principal eliminada.

ejemplo

Veamos un ejemplo de cómo eliminar una clave principal de una tabla existente en SQLite. Digamos que ya tenemos una tabla de proveedores con las siguientes definiciones:

CREATE TABLE suppliers
( supplier_id INTEGER,
  supplier_name VARCHAR NOT NULL,
  address VARCHAR,
  city VARCHAR,
  CONSTRAINT suppliers_pk PRIMARY KEY (supplier_id)
);

Queremos eliminar una clave principal de la tabla de proveedores. Podemos ejecutar los siguientes comandos:

PRAGMA foreign_keys=off;

BEGIN TRANSACTION;

ALTER TABLE suppliers RENAME TO old_suppliers;

CREATE TABLE suppliers
(
  supplier_id INTEGER,
  supplier_name VARCHAR NOT NULL,
  address VARCHAR,
  city VARCHAR
);

INSERT INTO suppliers SELECT * FROM old_suppliers;

COMMIT;

PRAGMA foreign_keys=on;

En este ejemplo, descartamos la clave principal en la tabla de proveedores existente. La tabla original seguirá existiendo en la base de datos denominada old_suppliers. Una vez que haya confirmado que la tabla de proveedores y los datos son los esperados, puede eliminar la tabla old_suppliers.

DROP TABLE old_suppliers;
(Visited 14 times, 1 visits today)