mysql - criando um mecanismo semelhante às seqências do Oracle

O MySQL fornece um mecanismo automático para incrementar IDs de registro. Isso é bom para muitos propósitos, mas eu preciso poder usar as seqüências oferecidas pelo ORACLE. Obviamente, não faz sentido criar uma tabela para esse fim.

A solução DEVE ser simples:

1) Crie uma tabela para hospedar todas as seqüências necessárias,

2) Crie uma função que aumente o valor de uma sequência específica e retorne o novo valor,

3) Crie uma função que retorne o valor atual de uma sequência.

Em teoria, parece simples ... MAS ...

Ao aumentar o valor de uma sequência (praticamente o mesmo quenextval no Oracle), é necessário impedir que outras sessões executem essa operação (ou mesmo buscar o valor atual) até que a atualização seja concluída.

Duas opções teóricas:

a - Use uma instrução UPDATE que retorne o novo valor em uma única captura ou

b - Bloqueie a tabela entre UPDATE e SELECT.

Infelizmente, parece que o MySQL não permite bloquear tabelas dentro de funções / procedimentos e, ao tentar fazer a coisa toda em uma única instrução (como UPDATE ... RETURNING ...), você deve usar variáveis @ -type que sobrevivam a conclusão da função / procedimento.

Alguém tem uma idéia / solução funcional para isso?

Obrigado.

questionAnswers(1)

yourAnswerToTheQuestion