Off topic - Mysql (Urgente)

6 respostas
Marques

Pessoal,

O meu problema:

Criar uma tabela InnoDB com a seguinte estrutura:

Nome da tabela: notasEmitidas.

Campo1 - numeroNotaFiscal - Primary key
Campo2 - itemNF (Autoincrement) - Primary key
Campo3 a CampoN - diversos

Na especificação o itemNF deve ser auto-increment para cada notaFiscal. O
problema é que o Mysql trabalhando com tabelas innoDB só permite
autoincrement no primeiro campo da tabela.

Urgentemente preciso saber como solucionar esse problema, ou seja ter um
campo autoincrement no segundo campo da tabela innoDB.

Alguém pode me ajudar?

Antecipadamente agradecido,

José Marques

6 Respostas

Rafael_Steil

Como assim, no segundo campo?

CREATE TABLE minhaTabela (
    numero_nf INT NOT NULL,
    item_nf INT NOT NULL AUTO_INCREMENT,
    outro_campo VARCHAR(100),
    PRIMARY KEY (numero_nf, item_nf)
) Type=InnoDB;

isso funciona normal… ( ou entendi errado ).

Rafael

danieldestro

Ele que auto increment nos dois campos da PK.

Rafael_Steil

Mas nao tem sentido os 2 campos serem auto increment… Os ids serao sempre os mesmos… entao, o correto seria usar um unico id.

Uma saida eh usar instrucoes SQL mesmo para aumentar o contador… algo como

INSERT INTO minhaTabela ( numero_nf, outro_campo ) VALUES (numero_nf + 1, 'xxx')

Assim, a cada insercao, o numero da nf eh incrementado e o campo auto increment eh tratado pelo banco. Mas eh estranho.

Rafael

danieldestro

Certo!

Pergunta…

Quando eu implmento classes de acesso ao banco, com INSERT. Aguns bancos possuem auto_increment, outros possuem SEQUENCE…

Como vocês costumam fazer que, na inserção, o valor da chave seja colocado no Objeto que é inserido no banco??? Exemplo uma classe Pessoa que tenha os atributos id, nome, idade, que são os campos da tabela Pessoa no banco???

Rafael_Steil

Voce precisa passar

Statement.RETURN_GENERATED_KEYS

ao criar o statement e, e entao fazer:

...
meuStatement.executeUpdate();
ResultSet rs = meuStatement.getGeneratedKeys();
rs.next();
int id = rs.getInt(1);
...

Rafael

danieldestro

mto estranho

Criado 12 de dezembro de 2003
Ultima resposta 12 de dez. de 2003
Respostas 6
Participantes 3