Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como faço para criar uma sequência no MySQL?


Esta é uma solução sugerida pelo Manual do MySQL :

Se expr for fornecido como um argumento para LAST_INSERT_ID(), o valor do argumento será retornado pela função e será lembrado como o próximo valor a ser retornado por LAST_INSERT_ID(). Isso pode ser usado para simular sequências:

Crie uma tabela para conter o contador de sequências e inicialize-o:
    mysql> CREATE TABLE sequence (id INT NOT NULL);
    mysql> INSERT INTO sequence VALUES (0);

Use a tabela para gerar números de sequência como este:
    mysql> UPDATE sequence SET id=LAST_INSERT_ID(id+1);
    mysql> SELECT LAST_INSERT_ID();

A instrução UPDATE incrementa o contador de sequência e faz com que a próxima chamada para LAST_INSERT_ID() retorne o valor atualizado. A instrução SELECT recupera esse valor. A função da API C mysql_insert_id() também pode ser usada para obter o valor. Veja Seção 23.8.7.37,“mysql_insert_id()”.

Você pode gerar sequências sem chamar LAST_INSERT_ID(), mas a utilidade de usar a função dessa forma é que o valor do ID é mantido no servidor como o último valor gerado automaticamente. É seguro para vários usuários porque vários clientes podem emitir a instrução UPDATE e obter seu próprio valor de sequência com a instrução SELECT (ou mysql_insert_id()), sem afetar ou ser afetado por outros clientes que geram seus próprios valores de sequência.