Oi gente.
Estou portando (não migrando) uma aplicação em Oracle para mysql. A aplicação deve ser completamente independente de BD, mas ainda não é completamente.
No oracle usamos “SELECT sequence.nextval FROM DUAL” para obter o próximo valor a ser inserido na tabela. Esta estratégia é importante por que há bastante concorrência por ser usado simultaneamente por vários usuários, pela necessidade de transações e pela necessidade de conhecer-se o valor gerado na PK para que este possa ser usado com FK em outras tabelas na mesma transação.
Daí, na hora de portar para MySQL, o problema: MySQL usa autoincrement. É possível simular-se a estratégia de sequences sem sacrificar nenhum dos quesitos já existentes (concorrência, transações, usar a PK como FK em outras tabelas) e sem ter que refazer grande parte do código do zero?
Fala Armadilha tudo blz? vo tenta te ajudar
No mysql nao tem nada tao avancado qnt o oracle a solução e consultar o ultimo id cadastrada acresentar um nele trava o banco e fazer suas operações ai depois destrava,
E isso a falows v
[quote=mestreshake]Fala Armadilha tudo blz? vo tenta te ajudar
No mysql nao tem nada tao avancado qnt o oracle a solução e consultar o ultimo id cadastrada acresentar um nele trava o banco e fazer suas operações ai depois destrava,
E isso a falows v[/quote]
O que vem a ser este “trava” e “destrava”?
Quanto a concorrência, isso não buga não se dois usuários estiverem fazendo inserção na mesma tabela ao mesmo tempo?
Não sei se ajuda.
Quando você tem uma chave primária em uma tabela e faz um insert pode usar o
Ele mostrará o id do ultimo insert da sua conexão.
Outra solução possível é uma tabela para apenas guardar o numero da sequencia e adicionar mais 1 e atualizar.
Ex:
-- Cria a estrutura
CREATE TABLE sequence ( id int not null);
insert into sequence (1);
-- Atualiza e recupera o ID
Update sequence set id = id+1;
select LAST_INSERT_ID()