Error when adding FK

Asked

Viewed 205 times

1

I found just about this type of error in "Select", I followed all the restrictions but it didn’t work!

Error from line : 86 on command -

alter table tb_consulta add constraint fk_tb_consulta_tb_tratamento foreign key (idtrat) references tb_paciente(cod_tratamento)

Bug report -

ORA-00904: "IDTRAT": identificador inválido
00904. 00000 -  "%s: invalid identifier"
*Cause:    
*Action:

Error from line : 90 on command -

alter table tb_pagamento add constraint fk_tb_pagamento_tb_tratamento foreign key (cod_tratamento_tratamento) references tb_tratamento(cod_tratamento)

Bug report -

ORA-00904: "COD_TRATAMENTO_TRATAMENTO": identificador inválido
00904. 00000 -  "%s: invalid identifier"
*Cause:    
*Action:

Complete code:

create table tb_paciente (
nome varchar(45) NOT NULL,
cpf varchar(11) NOT NULL,
cidade varchar(45 ) NOT NULL,
bairro varchar(45) NOT NULL,
cep varchar(11) NOT NULL
);

create table tb_telefone(
cod_paciente varchar(11),
telefone varchar(11)
);

create table tb_tratamento(
cod_tratamento int NOT NULL,
tipo_tratamento varchar (45) not null,
valor float not null
);

create table tb_consulta(
id_paciente int not null,
cod_consulta varchar(45) not null,
horario_inicio TIMESTAMP not null,
horario_final TIMESTAMP  not null,
cod_equipe int not null,
tb_equipe_cod_equipe int not null,
tb_tratamento_cod_tratamento int not null
);

create table tb_consulta_material(
cod_consulta int not null,
tb_material_cod_material varchar(45) not null,
tb_consulta_cod_material varchar(45) not null
);

create table tb_material(
nome varchar(45) not null,
cod_material varchar(45) not null
);

create table tb_equipe(
cod_equipe int not null,
nome varchar(45) not null
);

create table tb_funcionario(
nome varchar(45) not null,
cod_equipe int not null,
cpf varchar(45) not null,
tipo varchar(45) not null,
tb_equipe_cod_equipe int not null
);

create table tb_salas(
numero int not null,
cod_consutorio int not null,
tb_consultorio_cnpj int not null,
tb_equipe_cod_equipe int not null
);

create table tb_consultorio(
nome varchar(45) not null,
cnpj int not null
);

create table tb_pagamento(
cod_pagamento int not null,
valor int not null

);
alter table tb_pagamento add constraint PK_TB_PAGAMENTO primary key(cod_pagamento);
alter table TB_CONSULTA add constraint PK_TB_CONSULTA primary key(cod_consulta);
alter table TB_consultorio add constraint PK_TB_consultorio primary key(cnpj);
alter table TB_equipe add constraint PK_TB_equipe primary key(cod_equipe);
alter table TB_funcionario add constraint PK_TB_funcionario primary key(cpf);
alter table TB_material add constraint PK_TB_material primary key(cod_material);
alter table TB_paciente add constraint PK_TB_paciente primary key(cpf);
alter table TB_salas add constraint PK_TB_salas primary key(numero);
alter table tb_telefone add cpf_paciente varchar (11) not null;
alter table TB_telefone add constraint PK_TB_telefone primary key(cpf_paciente);
alter table TB_tratamento add constraint PK_TB_tratamento primary key(cod_tratamento);
alter table tb_tratamento add cpf_paciente varchar (11) not null;
alter table tb_salas drop column cod_consutorio;
--paciente para tratamento
alter table tb_tratamento add constraint fk_tb_tratamento_tb_paciente foreign key (cpf_paciente) references tb_paciente(cpf); 
alter table tb_consulta add constraint fk_tb_consulta_tb_tratamento foreign key (idtrat) references tb_paciente(cod_tratamento); 
-- paciente para telefone
alter table tb_telefone add constraint fk_tb_telefone_tb_paciente foreign key (cpf_paciente) references tb_paciente(cpf);
--tratamento para pagamento
alter table tb_pagamento add constraint fk_tb_pagamento_tb_tratamento foreign key (cod_tratamento_tratamento) references tb_tratamento(cod_tratamento);

1 answer

0

There are some errors in the 2 commands:

In command of line 86:

alter table tb_consulta add constraint fk_tb_consulta_tb_tratamento foreign key (idtrat) references tb_paciente(cod_tratamento); 

In this command, as I understand it, you want to create a foreign key between tb_query and tb_treatment right? But you made a referral to tb_patient.

Then the command must be:

alter table tb_consulta add constraint fk_tb_consulta_tb_tratamento foreign key (cod_tratamento) references tb_tratamento(cod_tratamento); 

At the command of line 90, you are trying to create a foreign key between tb_payment and tb_treatment, then you must enter a column of both tables, and in case, you have reported a non-existent column, "COD_TRATAMENTO_TRATAMENTO"

When creating tables, you don’t need to name the columns equal to the table name, this is not a standard, and you will certainly have numerous problems in the future if you do.

I prefer to create the key Primary and key Foreign in table creation.

Another thing you can do to make it easy is to use auto_increment for the Primary Keys.

a recommendation would thus modify at its discretion:

create table tb_paciente (
cod_paciente int not null primary key AUTO_INCREMENT,
nome varchar(45) NOT NULL,
cpf varchar(11) NOT NULL,
cidade varchar(45 ) NOT NULL,
bairro varchar(45) NOT NULL,
cep varchar(11) NOT NULL
);

create table tb_telefone(
cod_telefone int not null primary key AUTO_INCREMENT,
cod_paciente int, 
FOREIGN KEY (cod_paciente) REFERENCES tb_paciente(cod_paciente),
telefone varchar(11)
);

create table tb_tratamento(
cod_tratamento int NOT NULL primary key AUTO_INCREMENT,
tipo_tratamento varchar (45) not null,
valor float not null,
cod_paciente int, 
FOREIGN KEY (cod_paciente) REFERENCES tb_paciente(cod_paciente)
);

create table tb_consulta(
cod_consulta int not null primary key AUTO_INCREMENT,
id_paciente int not null,
horario_inicio TIMESTAMP not null,
horario_final TIMESTAMP  not null,
cod_equipe int not null,
cod_tratamento int not null, 
FOREIGN KEY (cod_tratamento) REFERENCES tb_tratamento(cod_tratamento)
);

create table tb_consulta_material(
cod_consulta int not null,
cod_material varchar(45) not null
);

create table tb_material(
cod_material int not null primary key AUTO_INCREMENT,
nome varchar(45) not null
);

create table tb_equipe(
cod_equipe int not null primary key AUTO_INCREMENT,
nome varchar(45) not null
);

create table tb_funcionario(
cod_funcionario int not null primary key AUTO_INCREMENT,
nome varchar(45) not null,
cod_equipe int not null,
cpf varchar(45) not null,
tipo varchar(45) not null
);

create table tb_salas(
numero int not null,
cod_consutorio int not null,
cod_equipe int not null
);

create table tb_consultorio(
cod_consultorio int not null primary key AUTO_INCREMENT,
nome varchar(45) not null,
cnpj int not null
);

create table tb_pagamento(
cod_pagamento int not null primary key AUTO_INCREMENT,
valor int not null,
cod_tratamento int,
FOREIGN KEY (cod_tratamento) REFERENCES tb_tratamento(cod_tratamento)
);
  • Thank you very much!!!

  • if it has been very useful to you, please mark the question as answered, but if you have any further questions do not hesitate to ask.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.