nextval no mysql  XML
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Autor Mensagem
victorwss
JWizard
[Avatar]

Membro desde: 18/12/2007 14:46:00
Mensagens: 2409
Localização: São Paulo - SP
Offline

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?

Victor Williams Stafusa da Silva

Bacharel em Ciência da Computação - UFMT // Especialista em Desenvolvimento Java - CEFET/MT // Doutorando em Ciência da Computação - IME-USP
SCJP 6.0 - 19/12/2007 - PASS - 88% // SCWCD 5 - 17/05/2008 - PASS - 79% // SCJA - 09/09/2008 - PASS - 96% // SCSNI - 30/06/2009 - PASS - 68% // SCBCD 5 - 31/05/2010 - PASS - 95%
Próximos: SCJD (encalhado com o projeto), SCEA parte I (estudando). Algum dia desses: SCMAD, OCA, SCEA e SCDJWS.

Computação: uma ciência holística e esotérica!
E então veio Deus a terra e disse aos homens: Não dividireis por zero.
XML is a giant step in no direction at all. (Erik Naggum)
Arquitetura de sistemas: Eu prefiro ser essa metamorfose ambulante do que ter aquela velha opinião formada sobre tudo.
Diga não as drogas: Não use java.util.Vector.
Cuidado: Este usuário pode ter temperamento agressivo.

Always code as if the person who will maintain your code is a maniac serial killer that knows where you live.
I am the maniac serial killer that knows where you live who will maintain your code.


É impossível falar de CMMI (Capability Maturity Model Integration) sem saber o que é CIMM (Capability Im-Maturity Model).


Se você escreve "concerteza", "concerteza" você andou matando aulas de português.
[MSN]
mestreshake
Thread.start()
[Avatar]

Membro desde: 28/02/2008 19:13:22
Mensagens: 31
Offline

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

Acho incrivel como as pessoas tem tempo para escrever um post de uma duvida mais nao perder 2 min fazendo um pesquisa no google.
aim icon [MSN] [ICQ]
victorwss
JWizard
[Avatar]

Membro desde: 18/12/2007 14:46:00
Mensagens: 2409
Localização: São Paulo - SP
Offline

mestreshake wrote: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


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?

Victor Williams Stafusa da Silva

Bacharel em Ciência da Computação - UFMT // Especialista em Desenvolvimento Java - CEFET/MT // Doutorando em Ciência da Computação - IME-USP
SCJP 6.0 - 19/12/2007 - PASS - 88% // SCWCD 5 - 17/05/2008 - PASS - 79% // SCJA - 09/09/2008 - PASS - 96% // SCSNI - 30/06/2009 - PASS - 68% // SCBCD 5 - 31/05/2010 - PASS - 95%
Próximos: SCJD (encalhado com o projeto), SCEA parte I (estudando). Algum dia desses: SCMAD, OCA, SCEA e SCDJWS.

Computação: uma ciência holística e esotérica!
E então veio Deus a terra e disse aos homens: Não dividireis por zero.
XML is a giant step in no direction at all. (Erik Naggum)
Arquitetura de sistemas: Eu prefiro ser essa metamorfose ambulante do que ter aquela velha opinião formada sobre tudo.
Diga não as drogas: Não use java.util.Vector.
Cuidado: Este usuário pode ter temperamento agressivo.

Always code as if the person who will maintain your code is a maniac serial killer that knows where you live.
I am the maniac serial killer that knows where you live who will maintain your code.


É impossível falar de CMMI (Capability Maturity Model Integration) sem saber o que é CIMM (Capability Im-Maturity Model).


Se você escreve "concerteza", "concerteza" você andou matando aulas de português.
[MSN]
Oliveira.caio
JavaGuru
[Avatar]
Membro desde: 24/07/2008 19:38:33
Mensagens: 226
Localização: São Paulo - SP
Offline

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.

Grato
Caio Oliveira



[Email] [WWW] [MSN]
reinaldo_cs
Smalltalk

Membro desde: 13/06/2008 07:39:53
Mensagens: 2
Offline

Outra solução possível é uma tabela para apenas guardar o numero da sequencia e adicionar mais 1 e atualizar.

Ex:
 
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Ir para:   
Powered by JForum 2.1.8 © JForum Team