Fazer autorelacionamento mysql
22/09/2020
0
Oi gente, preciso fazer que o supervisor da tabela funcionário seja uma chave estrangeira do cpf_funcionário. Como faço isto? Tentei diversas formas e sempre da o erro: Error Code: 3780. Referencing column 'cpf_supervisor' and referenced column 'cpf_func' in foreign key constraint 'supervisor' are incompatible.
Segue o código:
Segue o código:
CREATE TABLE tb_func ( cpf_func INT NOT NULL, cargo_func varchar(35) NOT NULL, cpf_supervisor INT NULL, PRIMARY KEY (cpf_func) ); ALTER TABLE tb_func ADD FOREIGN KEY (cpf_supervisor) REFERENCES tb_func (cpf_func);
Felipe Benedetto
Curtir tópico
+ 0
Responder
Post mais votado
23/09/2020
Olá amigo, tudo bem?
Primeiramente, campos de CPF não podem ser inteiros pois temos muitos CPFs que começam com "0" e se for inteiro, o banco engole esse primeiro caracter. Ai você teria que fazer uma verificação pra se faltar um caracter adicionar o "0" no inicio e isso pode gerar CPF invalido.
Segundamente, os campos são incompativeis, creio eu, porque um é nulo e o outro não. Tente colocar os dois não nulos e testar.
Poste se deu certo.
Espero ter ajudado.
Primeiramente, campos de CPF não podem ser inteiros pois temos muitos CPFs que começam com "0" e se for inteiro, o banco engole esse primeiro caracter. Ai você teria que fazer uma verificação pra se faltar um caracter adicionar o "0" no inicio e isso pode gerar CPF invalido.
Segundamente, os campos são incompativeis, creio eu, porque um é nulo e o outro não. Tente colocar os dois não nulos e testar.
Poste se deu certo.
Espero ter ajudado.
Alex William
Responder
Mais Posts
23/09/2020
Felipe Benedetto
Olá amigo, tudo bem?
Primeiramente, campos de CPF não podem ser inteiros pois temos muitos CPFs que começam com "0" e se for inteiro, o banco engole esse primeiro caracter. Ai você teria que fazer uma verificação pra se faltar um caracter adicionar o "0" no inicio e isso pode gerar CPF invalido.
Segundamente, os campos são incompativeis, creio eu, porque um é nulo e o outro não. Tente colocar os dois não nulos e testar.
Poste se deu certo.
Espero ter ajudado.
Primeiramente, campos de CPF não podem ser inteiros pois temos muitos CPFs que começam com "0" e se for inteiro, o banco engole esse primeiro caracter. Ai você teria que fazer uma verificação pra se faltar um caracter adicionar o "0" no inicio e isso pode gerar CPF invalido.
Segundamente, os campos são incompativeis, creio eu, porque um é nulo e o outro não. Tente colocar os dois não nulos e testar.
Poste se deu certo.
Espero ter ajudado.
Olá Alex, tudo bem?
Cara, descobri que foi um erro meu... eu alterei a foreign key para INT mas esqueci de dar um alter table ou drop table, mas antes estava a foreign key como VARCHAR e a primary key como INT, ai por isso deu esta incompatibilidade....
Mas sobre este esquema do INT no cpf, muito obrigado mesmo, não sabia disto. Aliás estava usado numeros do 1 ao 15 e dizendo q são CPF, não tinha me atentado nisto... agora mudei para ID ao invés de cpf. Obrigado pela ajuda!!
Responder
Clique aqui para fazer login e interagir na Comunidade :)