Ir para o conteúdo
pvalentim

MYSQL XAMPP - Chave estrangeira

Mensagens Recomendadas

pvalentim    0
pvalentim

Boa noite

Ao criar duas tabelas fiz a sua ligação da seguinte forma e não me deu qualquer erro.

create table funcionarios(

num_funcionario int(6) not null,

cod_departamento int (6),

primary key (num_funcionario),

INDEX (cod_departamento),

foreign key (cod_departamento) references departamentos

)TYPE=InnoDB;

create table departamentos(

cod_departamento int(6) not null,

nome text(10) not null,

primary key (cod_departamento)

)TYPE=InnoDB;

Acontece que não existe integridade referencial. Ou seja, consigo inserir funcionários sem ter qualquer departamento inserido.

Isto não devia acontecer.

Obrigado

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Saco    0
Saco

Eu não sou muito expert em mysql mas... não devia ser

foreign key (cod_departamento) references departamentos(cod_departamento)

?

Não esquecer que a tabela departamentos tem de ser a primeira a ser criada.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pvalentim    0
pvalentim

E foi de facto criada primeiramente.

Mas já resolvi o problema. Tenho de activar o INNODB que por defeito está desactivo.

Para activar o INNODB basta editar o  ficheiro my.cnf no editor de texto e altere as linhas (basta retirar e pôr o #):

skip-innodb

#innodb_data_home_dir = C:/xampp/xampp/mysql/data/

#innodb_data_file_path = ibdata1:10M:autoextend

#innodb_log_group_home_dir = C:/xampp/xampp/mysql/data/

#innodb_log_arch_dir = C:/xampp/xampp/mysql/data/

#set-variable = innodb_buffer_pool_size=16M

#set-variable = innodb_additional_mem_pool_size=2M

#set-variable = innodb_log_file_size=5M

#set-variable = innodb_log_buffer_size=8M

#innodb_flush_log_at_trx_commit=1

#set-variable = innodb_lock_wait_timeout=50

Para

# skip-innodb

innodb_data_home_dir = C:/xampp/xampp/mysql/data/

innodb_data_file_path = ibdata1:10M:autoextend

innodb_log_group_home_dir = C:/xampp/xampp/mysql/data/

innodb_log_arch_dir = C:/xampp/xampp/mysql/data/

set-variable = innodb_buffer_pool_size=16M

set-variable = innodb_additional_mem_pool_size=2M

set-variable = innodb_log_file_size=5M

set-variable = innodb_log_buffer_size=8M

innodb_flush_log_at_trx_commit=1

set-variable = innodb_lock_wait_timeout=50

As tabelas têm de ser criadas com o tipo INNODB

Cumprimentos

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade