Ir para conteúdo

Arquivado

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

regina

On Update Cascade

Recommended Posts

Boa tarde!Estou precisando urgentemente da ajuda de vocês, já procurei mas não encontrei.Preciso alterar uma tabela filho para quando o chave da tabela pai for alterada esta se altere também, preciso inserir ON UPDATE CASCADE mas não sei como utilizar:Minhas tabelas já criadas e com dados estão assim:

# Estrutura da tabela `tb_pais`# esta é a tabela principalCREATE TABLE `tb_pais` (`pais_id` int(10) NOT NULL auto_increment,`pai_nome` varchar(60) default NULL,`mae_nome` varchar(60) NOT NULL default '',`responsavel` enum('pai','mae','outro') NOT NULL default 'pai',`responsavel_nome` varchar(60) default NULL,`responsavel_cpf` varchar(20) NOT NULL default '',`residencial` varchar(20) default NULL,`comercial` varchar(20) default NULL,`celular` varchar(20) default NULL,`email` varchar(60) default NULL,`senha` varchar(255) NOT NULL default '',`lembrete` varchar(50) default NULL,`status` enum('ativo','inativo') NOT NULL default 'ativo',`criacao_data` datetime NOT NULL default '0000-00-00 00:00:00',`criacao_operador` int(10) NOT NULL default '0',`edicao_operador` int(10) default NULL,`edicao_data` datetime default NULL,PRIMARY KEY (`pais_id`),UNIQUE KEY `responsavel_cpf` (`responsavel_cpf`)) TYPE=InnoDB;# esta é a tabela filho é nela que eu preciso inserir o ON UPDATE CASCADE porém não sei comoCREATE TABLE `tb_alunos` (`aluno_id` int(10) NOT NULL auto_increment,`responsavel_cpf` varchar(14) NOT NULL default '',`aluno_nome` varchar(60) NOT NULL default '',`aluno_matricula` int(6) unsigned zerofill NOT NULL default '000000',`turma_id` int(3) NOT NULL default '0',`aluno_idade` int(2) NOT NULL default '0',`aluno_nasc_dt` date NOT NULL default '0000-00-00',`aluno_sexo` enum('feminino','masculino') NOT NULL default 'feminino',`observacao` varchar(255) default NULL,`status` enum('ativo','inativo') NOT NULL default 'ativo',`criacao_data` datetime NOT NULL default '0000-00-00 00:00:00',`criacao_operador` int(10) NOT NULL default '0',`edicao_operador` int(10) default NULL,`edicao_data` datetime default NULL,PRIMARY KEY (`aluno_id`,`responsavel_cpf`),UNIQUE KEY `aluno_matricula` (`aluno_matricula`),KEY `responsavel_cpf` (`responsavel_cpf`),CONSTRAINT `responsavel_cpf` FOREIGN KEY (`responsavel_cpf`) REFERENCES `tb_pais` (`responsavel_cpf`)) TYPE=InnoDB;
Uso o phpmyadmin e estou tentando assim:
ALTER  TABLE  `tb_alunos`  ADD  CONSTRAINT  `responsavel_cpf`  FOREIGN  KEY (  `responsavel_cpf`  )  REFERENCES  `tb_pais` (  `responsavel_cpf`  )  ON  UPDATE  CASCADE
porém me exibe a seguinte mensagem de erro:

Mensagens do MySQL :#1005 - Can't create table './banco/#sql-b0c_1e43b.frm' (errno: 121)

Agradeço desde já!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá esse erro é devido os tipos de dados serem incompatives, exemplo: na tabela 1 você utiliza int(10)na tabela 2 você utiliza int(8) ou tinyintlogo você tem que casar além dos tipos os tamanhos int(10) com int(10) por exemplo, é estranha a mensagem de erro do phpmyadmin que não ajuda muito.

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.