Fontolan 0 Denunciar post Postado Outubro 12, 2012 Bom dia a todos, gostaria de pedir se alguém pode esclarecer uma duvida, quando eu tento inserir dados em duas tabelas, sendo uma especialização, ou seja, recebe a PK da outra tabela, gera o seguinte erro em SQL: 12:13:44 INSERT INTO pessoa (RG_pessoa, CPF_pessoa, senha, orgao_emissor, nome_pessoa, entrada_col, saida_col, data_nascimento, sexo_pessoa, estado, CEP, cidade, logradouro, bairro, numero) VALUES ('145','141','1231', 'SSPPR', 'Gustavo', '14/05/12', '14/05/03', '14/05/03', 'm', 'PR', 86360, 'gdsa', 'asda', 'asdad', 108) 1 row(s) affected 12:13:44 INSERT INTO professor (curriculo, disc_leciona) VALUES ('Informatica','11-12-14-') Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (`boletim_virtual`.`professor`, CONSTRAINT `fk_Professor_Pessoa` FOREIGN KEY (`Pessoa_id_pessoa`) REFERENCES `pessoa` (`id_pessoa`) ON DELETE NO ACTION ON UPDATE NO ACTION) Esse é o código para o teste que eu utilizei: INSERT INTO pessoa (RG_pessoa, CPF_pessoa, senha, orgao_emissor, nome_pessoa, entrada_col, saida_col, data_nascimento, sexo_pessoa, estado, CEP, cidade, logradouro, bairro, numero) VALUES ('145','141','1231', 'SSPPR', 'Gustavo', '14/05/12', '14/05/03', '14/05/03', 'm', 'PR', 123456, 'Cidade', 'Nome da rua', 'Nome do bairro', 123); INSERT INTO professor (curriculo, disc_leciona) VALUES ('Informatica','11-12-14-'); Tabelas no banco: -- ----------------------------------------------------- -- Table `boletim_virtual`.`Pessoa` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `boletim_virtual`.`Pessoa` ( `id_pessoa` INT NOT NULL AUTO_INCREMENT , `RG_pessoa` VARCHAR(9) NULL , `CPF_pessoa` VARCHAR(11) NULL , `senha` VARCHAR(20) NULL , `orgao_emissor` VARCHAR(7) NULL , `nome_pessoa` VARCHAR(70) NULL , `entrada_col` VARCHAR(10) NULL , `saida_col` VARCHAR(10) NULL , `data_nascimento` VARCHAR(10) NULL , `sexo_pessoa` CHAR NULL , `estado` VARCHAR(2) NULL , `CEP` INT NULL , `cidade` VARCHAR(50) NULL , `logradouro` VARCHAR(70) NULL , `bairro` VARCHAR(60) NULL , `numero` VARCHAR(5) NULL , PRIMARY KEY (`id_pessoa`) ) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `boletim_virtual`.`Professor` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `boletim_virtual`.`Professor` ( `Pessoa_id_pessoa` INT NOT NULL , `curriculo` TEXT NULL , `disc_leciona` VARCHAR(9) NULL , PRIMARY KEY (`Pessoa_id_pessoa`) , INDEX `fk_Professor_Pessoa` (`Pessoa_id_pessoa` ASC) , CONSTRAINT `fk_Professor_Pessoa` FOREIGN KEY (`Pessoa_id_pessoa` ) REFERENCES `boletim_virtual`.`Pessoa` (`id_pessoa` ) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; Agradeço a ajuda, Att. Gustavo Fontolan Compartilhar este post Link para o post Compartilhar em outros sites
Prog 183 Denunciar post Postado Outubro 17, 2012 Ta legal... E onde você passa o ID_PESSOA da tabela PESSOA para a tabela PROFESSOR? Também parece haver algum problema com o seu modelo, mas para ter certeza sobre isto é necessário conhecer as regras de negócio. Sugiro rever. Se você estiver numa transação, pode tentar algo como: START TRANSACTION; INSERT INTO pessoa (RG_pessoa, CPF_pessoa, senha, orgao_emissor, nome_pessoa, entrada_col, saida_col, data_nascimento, sexo_pessoa, estado, CEP, cidade, logradouro, bairro, numero) VALUES ('145','141','1231', 'SSPPR', 'Gustavo', '14/05/12', '14/05/03', '14/05/03', 'm', 'PR', 123456, 'Cidade', 'Nome da rua', 'Nome do bairro', 123); SET @IDPESSOA = LAST_INSERT_ID(); INSERT INTO professor (Pessoa_id_pessoa, curriculo, disc_leciona) VALUES (@IDPESSOA, 'Informatica','11-12-14-'); COMMIT; Compartilhar este post Link para o post Compartilhar em outros sites