← Voltar ao blog
MariaDB 22 de outubro de 2026 5 min de leitura

MariaDB: SEQUENCE, o gerador de números que o AUTO_INCREMENT não consegue ser

Sequences são objetos independentes que geram números: servem para várias tabelas, para números de protocolo e para migrar do Oracle ou PostgreSQL.

MariaDB: SEQUENCE, o gerador de números que o AUTO_INCREMENT não consegue ser

Pense na maquininha de senha do banco: ela não pertence a um guichê. Qualquer guichê chama o próximo número. O AUTO_INCREMENT é o oposto: cada tabela tem a sua senha, presa nela.

Este artigo faz parte da série MariaDB além do MySQL: dez recursos que existem no MariaDB e não existem no MySQL Community. Exemplos escritos para MariaDB 11.4 LTS (e 11.7+ quando indicado), comparados com MySQL 8.4 LTS.

O que é uma sequence?

Um objeto do banco, criado com CREATE SEQUENCE (MariaDB 10.3+), que entrega o próximo número quando alguém pede. Não está amarrado a uma coluna nem a uma tabela.

               ┌──────────────────┐
  pedidos ────▶│  seq_protocolo   │◀──── chamados
  devolucoes ─▶│  próximo: 1047   │◀──── aplicação (antes do INSERT)
               └──────────────────┘

Na prática

CREATE SEQUENCE seq_protocolo
  START WITH 1000
  INCREMENT BY 1
  CACHE 50;

SELECT NEXTVAL(seq_protocolo);          -- 1000
SELECT NEXT VALUE FOR seq_protocolo;    -- 1001 (sintaxe do padrão SQL)
SELECT LASTVAL(seq_protocolo);          -- 1001 (último desta sessão)

-- Como valor padrão de coluna
CREATE TABLE chamados (
  protocolo BIGINT DEFAULT NEXTVAL(seq_protocolo) PRIMARY KEY,
  assunto   VARCHAR(200)
);

-- Ajustar depois de uma importação
SELECT SETVAL(seq_protocolo, 50000);

O que dá para fazer que o AUTO_INCREMENT não faz

  • Um contador para várias tabelas (pedidos e devoluções com o mesmo protocolo sequencial).
  • Saber o número antes do INSERT, útil para montar registros pai e filho na aplicação.
  • Incrementos e ciclos: INCREMENT BY 10, MAXVALUE, CYCLE.
  • Migração de Oracle e PostgreSQL, que usam sequences em todo lugar.

E no MySQL?

O MySQL 8.4 só tem AUTO_INCREMENT. A gambiarra clássica é uma tabela-contador com UPDATE ... SET id = LAST_INSERT_ID(id + 1), que funciona mas serializa todo mundo numa linha só.

Cuidados

  • Sequence tem buracos. Rollback não devolve número, e o CACHE perde os números reservados se o servidor reiniciar. Se a lei exige numeração sem lacunas (nota fiscal, por exemplo), sequence não é a ferramenta.
  • A sequence é, por baixo, uma tabela especial: aparece em SHOW FULL TABLES com o tipo SEQUENCE.

A série completa: MariaDB além do MySQL

Ainda decidindo entre os dois? Leia MySQL ou MariaDB: qual é o melhor? e o guia definitivo de MySQL.

Quer dominar a base que os dois compartilham?

MariaDB nasceu do MySQL, e tudo o que é fundamento (modelagem, índices, transações, replicação, otimização) vale para os dois. É isso que eu ensino no livro Aprendendo MySQL: Prática, Teoria, Laboratórios, Desafios e Projetos: 292 páginas, 10 laboratórios guiados, 277 exercícios e 4 desafios com gabarito, e uma máquina virtual pronta para você quebrar (e consertar) à vontade.

Conheça o livro e leia a degustação gratuita.

Bora trocar ideia?

Se este artigo te ajudou (ou te fez discordar, que também vale), me siga no LinkedIn e no Instagram. Lá eu posto bastidores de banco de dados, história da computação e histórias de produção que ninguém conta em curso oficial.


Sobre o autor: Alexandre Almeida atua com bancos de dados há mais de 25 anos, foi instrutor oficial de MySQL e Oracle para mais de 1.000 alunos e escreveu Aprendendo MySQL: Prática, Teoria e Laboratórios.

Fontes: MariaDB Server Documentation (MariaDB Knowledge Base), notas de release do MariaDB Server, MySQL 8.4 Reference Manual. Imagem de capa: ilustração gerada por IA (mão puxando uma senha de uma maquininha de atendimento).