ORA-00907: 再次缺少右括号

问题描述

为什么?我用过

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,descricao VARCHAR2(4000) NOT NULL,FOREIGN KEY (id_p) REFERENCES Pergunta (id_p)
);

解决方法

多个问题:

  1. Oracle 中的标识列是使用 generated always as identity
  2. 创建的
  3. Int 数据类型不需要长度。
  4. 引用另一个表是基于列的,您需要将一列链接到另一个表中的一列,因此当您在 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,id_p int,FOREIGN KEY (id_p) REFERENCES Pergunta (id_p),PRIMARY KEY(id_r)
);

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...