BIGINT UNSIGNED AUTO_INCREMENT
⭐ Essencial 💾 8 Bytes (64 bits)Chave primária de 64 bits para tabelas massivas (padrão em frameworks modernos como Laravel).
Ocupa o dobro do espaço de um INT (8 bytes em vez de 4), mas permite até 18 quintilhões de registros. Frameworks modernos como Laravel utilizam BIGINT UNSIGNED como padrão (`$table->id()`) para garantir que nenhuma tabela esgote seus IDs, mesmo em sistemas de grande escala.
✅ Quando Usar (Casos Ideais)
- • Tabelas que crescem rapidamente: pedidos, itens_pedido, logs_acesso, mensagens_chat, notificações, movimentações.
- • Como padrão geral de chave primária caso queira total padronização no banco inteiro.
🚫 Quando NÃO Usar (Armadilhas)
- • Tabelas auxiliares estáticas minúsculas (ex: estados_brasileiros com 27 linhas), onde `TINYINT` ou `INT` economiza memória em milhões de FKs.
- • ATENÇÃO NO DRAWDB: Nunca crie uma FK `INT` apontando para uma PK `BIGINT`! O MySQL recusará criar a Foreign Key (Erro 150 / 3780).
📐 Como Configurar no DrawDB Abrir DrawDB ↗
BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY
BIGSERIAL PRIMARY KEY
INTEGER PRIMARY KEY AUTOINCREMENT
📋 Exemplos Reais de Colunas com BIGINT:
CREATE TABLE usuarios (
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
email VARCHAR(150) NOT NULL UNIQUE
);
CREATE TABLE logs_auditoria (
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
usuario_id BIGINT UNSIGNED NOT NULL,
acao VARCHAR(100) NOT NULL,
criado_em TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT fk_logs_usuario
FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
ON DELETE CASCADE
);
<?php
declare(strict_types=1);
// Em PHP de 64-bits (padrão atual), o tipo `int` suporta até 9 quintilhões (PHP_INT_MAX).
$usuarioId = 9876543210;
$stmt = $pdo->prepare('
INSERT INTO logs_auditoria (usuario_id, acao)
VALUES (:usuario_id, :acao)
');
$stmt->bindValue(':usuario_id', $usuarioId, PDO::PARAM_INT);
$stmt->bindValue(':acao', 'LOGIN_SUCESSO', PDO::PARAM_STR);
$stmt->execute();
$logId = (int) $pdo->lastInsertId();