Почему? я использовал

CONSTRAINT FK_r_p FOREIGN KEY (id_p) REFERENCES Perguntas (id_p)

Раньше, я не знаю, имеет ли это значение, но ... что в этом плохого?

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)
);
-1
Natan Giraldi Gonçalves 20 Май 2021 в 16:59

1 ответ

Лучший ответ

Несколько вопросов:

  1. Столбцы идентификаторов в Oracle создаются с использованием generated always as identity
  2. Тип данных Int не требует длины.
  3. ссылка на другую таблицу основана на столбцах, вам нужно связать столбец со столбцом в другой таблице, поэтому, когда вы делаете fk на id_p в Pergunta, вам нужно определить столбец для этого в вашей таблице

Вот что я имею в виду:

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)
);
2
eshirvana 20 Май 2021 в 14:32