regina 0 Denunciar post Postado Maio 2, 2007 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 CASCADEporé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
regina 0 Denunciar post Postado Maio 2, 2007 Resolvido http://dev.mysql.com/doc/refman/4.1/pt/inn...onstraints.html Compartilhar este post Link para o post Compartilhar em outros sites
João Gabriel Maluf 0 Denunciar post Postado Maio 23, 2007 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