Why? I have used
x
CONSTRAINT FK_r_p FOREIGN KEY (id_p) REFERENCES Perguntas (id_p)
before, I don’t know if it makes a difference but… what’s is wrong with this?
CREATE TABLE Pergunta
(
id_p INT(4) NOT NULL PRIMARY KEY AUTO_INCREMENT,
nome_aluno VARCHAR2(60) NOT NULL,
titulo VARCHAR2(50) NOT NULL,
nome_disciplina VARCHAR2(50),
descricao VARCHAR2(4000) NOT NULL
);
CREATE TABLE Resposta
(
id_r INT(4) NOT NULL PRIMARY KEY AUTO_INCREMENT,
titulo VARCHAR2(50) NOT NULL,
descricao VARCHAR2(4000) NOT NULL,
FOREIGN KEY (id_p) REFERENCES Pergunta (id_p)
);
Advertisement
Answer
multiple issues :
- Identity column in Oracle are created using
generated always as identity
- Int datatype doesn’t need length.
- referencing to another table is based on columns , you need to link a column to a column in another table , so when you make fk to id_p in Pergunta , you need to define a column for that in your table
here is what I mean:
CREATE TABLE Pergunta(
id_p INT GENERATED ALWAYS AS IDENTITY NOT NULL,
nome_aluno VARCHAR2(60) NOT NULL,
titulo VARCHAR2(50) NOT NULL,
nome_disciplina VARCHAR2(50),
descricao VARCHAR2(4000) NOT NULL,
primary key(id_p)
);
CREATE TABLE Resposta(
id_r INT GENERATED ALWAYS AS IDENTITY NOT NULL,
titulo VARCHAR2(50) NOT NULL,
descricao VARCHAR2(4000) NOT NULL,
id_p int ,
FOREIGN KEY (id_p) REFERENCES Pergunta (id_p),
PRIMARY KEY(id_r)
);