-1

为什么?我用过

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)
);
4

1 回答 1

2

多个问题:

  1. Oracle 中的标识列是使用创建的generated always as identity
  2. Int 数据类型不需要长度。
  3. 引用另一个表是基于列的,你需要将一个列链接到另一个表中的列,所以当你在 Pergunta 中将 fk 设置为 id_p 时,你需要在你的表中为它定义一个列

这就是我的意思:

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)
);
于 2021-05-20T14:32:38.987 回答