Error when adding FK

1

I found only this type of error in "Select", I followed all the restrictions but it did not work!

Error from line: 86 in command -

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

Error Reporting -

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

Error from line: 90 in command -

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

Error Reporting -

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);
    
asked by anonymous 28.04.2018 / 19:47

1 answer

0

There are some errors in the 2 commands:

At the command 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 have made references to the patient.

Then the command should be:

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

At the command 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 this case, you entered a nonexistent column, "COD_Translation_Translation"

When creating tables, you do not need to name the columns the same as the table names, this is not a default, and you will certainly have lots of problems in the future if you do.

I prefer to create the primary key and foreign key in the creation of the table.

Another thing you can do to make it much easier is to use auto_increment for the primary keys.

A recommendation would be like this, modify at your 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)
);
    
28.04.2018 / 20:23