- ¿Qué es una clave primaria?
- Autogeneración del ID
- ¿Qué pasa si borras una fila?
- Opciones de autoincremento
Hasta ahora escribíamos los identificadores (id) a mano cada vez que agregábamos un registro. Eso funciona para practicar, pero en la vida real nadie hace eso. Las bases de datos pueden crear esos números automáticamente.
¿Qué es una clave primaria?
Imagina que tienes una tabla de usuarios. Cada fila representa a una persona, y cada una necesita un identificador único — una clave primaria.
CREATE TABLE users (
id BIGINT PRIMARY KEY,
username VARCHAR(50),
email VARCHAR(255),
first_name VARCHAR(50),
last_name VARCHAR(50),
created_at TIMESTAMP
);
💡 La clave primaria (PRIMARY KEY) garantiza que no haya dos filas con el mismo id.
-- Esto dará error porque el id = 1 ya existe
INSERT INTO users (id, username) VALUES (1, 'Ramiro');
INSERT INTO users (id, username) VALUES (1, 'Lucía');
🔵 Abrir en DB Fiddle
Autogeneración del ID
En la práctica, no escribimos los id a mano. La base de datos los crea automáticamente usando un contador interno. Cada vez que insertas un registro, el número sube +1.
CREATE TABLE users (
id BIGINT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
username VARCHAR(50),
email VARCHAR(255),
created_at TIMESTAMP
);
💡 Ahora el id se genera solo, no hace falta incluirlo en el INSERT. La clave primaria y el autoincremento se suelen usar juntos:
INSERT INTO users (username, email, created_at)
VALUES
('Lucienne', 'lucienne@example.com', '2022-06-14'),
('Ramiro', 'ramiro@example.com', '2022-06-15');
🔵 Abrir en DB Fiddle
| id | username | created_at | |
|---|---|---|---|
| 1 | Lucienne | lucienne@example.com | 2022-06-14 |
| 2 | Ramiro | ramiro@example.com | 2022-06-15 |
💡 Cada nuevo registro recibe un número único. Si eliminas una fila, el contador no retrocede.
¿Qué pasa si borras una fila?
Si eliminas un registro, el contador sigue avanzando. Esto evita que dos filas distintas terminen con el mismo id.
DELETE FROM users WHERE id = 2;
INSERT INTO users (created_at, email, first_name, last_name, username) VALUES
('2022-06-13 22:36:55.322', 'Angelita.Altenwerth96@hotmail.com', 'Jennyfer', 'Flatley', 'Kayley.Turcotte98');
SELECT * FROM users;
🔵 Abrir en DB Fiddle
💡 El id no se reutiliza: aunque borres la fila 2, el siguiente será 3.
Opciones de autoincremento
PostgreSQL permite dos variantes:
| Opción | Qué hace |
|---|---|
GENERATED ALWAYS |
La base genera el valor y no te deja modificarlo. |
GENERATED BY DEFAULT |
Puedes dejar que la base lo genere o escribirlo tú mismo. |
👉 En la mayoría de los casos usamos GENERATED ALWAYS.
Resumen
- La clave primaria identifica de forma única cada registro.
- El autoincremento genera los valores del
idautomáticamente. - Así evitas duplicados y errores al insertar datos.
- La opción más usada es
PRIMARY KEY GENERATED ALWAYS AS IDENTITY. - El contador nunca se reinicia: cada fila nueva recibe un número único.
Materiales adicionales
Para acceder completo a curso necesitas un plan básico
El plan básico te dará acceso completo a todos los cursos, ejercicios y lecciones de Códica, proyectos y acceso de por vida a la teoría de las lecciones completadas. La suscripción se puede cancelar en cualquier momento.