Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

josewilson

[Resolvido] Chave primaria composta com auto_increment no InnoDB

Recommended Posts

Galera já procurei e tentei de tudo encontrado na internet eu consegui resolver esse problema no engine MyIsam mas ele não se relaciona com outras tabelas por isso preciso fazer isso no engine InnoDB...

 

Existe a tabela Veículo e dentro dela

 

cod_veic, cod_veic_emp, cod_emp

 

cod_veic é a primary key

cod_veic_emp é o código do veículo por empresa por exemplo na empresa 1 tem o veículo 1 2 3 na empresa 2 tem o veículo 1 2 3 e assim vai

cod_emp é o código da empresa a que o veículo pertence

 

Fica assim

 

A | B | C |

1 | 1 | 1 |

2 | 2 | 1 |

3 | 3 | 1 |

4 | 1 | 2 |

5 | 2 | 2 |

6 | 1 | 3 |

 

A = cod_veic

B = cod_veic_emp

C = cod_emp

 

Alguém tem alguma solução

 

Ahh esqueci tem um problema que o cod_veic_emp não pode se repetir nunca por exemplo tem o cod_veic_emp 9 ai você deleta esse veículo e cadastra outro e ele aparece com cod_veic_emp 9 de novo

 

Por enquanto o meu código está assim:

 

create table veiculo
(
cod_veic int not null auto_increment,
cod_veic_emp int not null,
cod_emp int not null,
constraint pk_veic primary key(cod_veic, cod_emp),
constraint un_veic unique key(cod_veic_emp, cod_emp)
);

 

insert into veiculo (cod_veic_emp, cod_emp)
(select count(cod_veic_emp) + 1, 1 from veiculo where cod_emp = 1);

 

E já tentei com o max() também

 

insert into veiculo (cod_veic_emp, cod_emp)
(select max(cod_veic_emp) + 1, 1 from veiculo where cod_emp = 1);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom galera usei uma solução alternativa que vai funcionar no meu projeto

 

- Coloquei um campo na tabela veiculo chamado de stat_veic enum('1','2') se tiver 1 é ativo 2 é inativo(excluído)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.