Ir para conteúdo

POWERED BY:

Arquivado

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

Fontolan

Código em SQL

Recommended Posts

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.