首页 > 解决方案 > 创建表 - Oracle APEX 错误:是什么导致了我的 CREATE TABLE sql 脚本中的错误?

问题描述

为 DIRECTOR、COMPANY 和 GENRE 创建表时收到错误消息。MOVIE 运行良好,我将其包括在内,因为它是 PK。DIRECTOR 错误:ORA-00905:缺少关键字 GENRE 和 COMPANY 错误:ora-00904 标识符无效

我被卡住了,所以任何事情都会有所帮助。谢谢。

CREATE TABLE MOVIE (
IMDB_ID CHAR(9) NOT NULL,
Title VARCHAR(50) NOT NULL,
YearCreated VARCHAR(8) NOT NULL,
MovieDuration NUMBER(5) NOT NULL,
Mean_Rating NUMBER(2,1) NOT NULL,
Number_of_Votes VARCHAR(7) NOT NULL,
Budget VARCHAR(11),
CONSTRAINT IMDB_PK PRIMARY KEY (IMDB_ID)
);

CREATE TABLE DIRECTOR (
DirectorID CHAR(9) NOT NULL,
DirectorFirst VARCHAR(20) NOT NULL,
DirectorMiddle VARCHAR(20),
DirectorLast VARCHAR(30) NOT NULL,
WriterFirst VARCHAR(20) NOT NULL,
WriterMiddle VARCHAR(20),
WriterLast VARCHAR(30) NOT NULL,
CONSTRAINT IMDB_PK PRIMARY KEY (IMDB_ID),
CONSTRAINT DIRECTOR_FK FOREIGN KEY(DirectorID)
);

CREATE TABLE COMPANY (
Production_Company VARCHAR(50),
CONSTRAINT IMDB_PK PRIMARY KEY (IMDB_ID)
);

CREATE TABLE GENRE (
Genre_1 VARCHAR(15) NOT NULL,
Genre_2 VARCHAR(15),
Genre_3 VARCHAR(15),
CONSTRAINT IMDB_PK PRIMARY KEY (IMDB_ID)
);

标签: sqloracle-apexcreate-table

解决方案


您不能命名所有主键IMDB_PK;Oracle 不允许这样做,因为这些名称必须是唯一的。

此外,您试图创建一个指向无处的外键约束- 摆脱它。

已修复,您的代码可能看起来像这样(我并不是说这是您真正想要的,但是 - 根据您迄今为止发布的内容 - 可能是一个很好的起点)。

SQL> CREATE TABLE movie
  2  (
  3     imdb_id           CHAR (9) NOT NULL,
  4     title             VARCHAR (50) NOT NULL,
  5     yearcreated       VARCHAR (8) NOT NULL,
  6     movieduration     NUMBER (5) NOT NULL,
  7     mean_rating       NUMBER (2, 1) NOT NULL,
  8     number_of_votes   VARCHAR (7) NOT NULL,
  9     budget            VARCHAR (11),
 10     CONSTRAINT imdb_pk PRIMARY KEY (imdb_id)
 11  );

Table created.

SQL> CREATE TABLE director
  2  (
  3     directorid       CHAR (9) NOT NULL,
  4     directorfirst    VARCHAR (20) NOT NULL,
  5     directormiddle   VARCHAR (20),
  6     directorlast     VARCHAR (30) NOT NULL,
  7     writerfirst      VARCHAR (20) NOT NULL,
  8     writermiddle     VARCHAR (20),
  9     writerlast       VARCHAR (30) NOT NULL,
 10     CONSTRAINT director_fk PRIMARY KEY (directorid)
 11  );

Table created.

SQL> CREATE TABLE company
  2  (
  3     production_company   VARCHAR (50),
  4     CONSTRAINT company_pk PRIMARY KEY (production_company)
  5  );

Table created.

SQL> CREATE TABLE genre
  2  (
  3     genre_1   VARCHAR (15) NOT NULL,
  4     genre_2   VARCHAR (15),
  5     genre_3   VARCHAR (15),
  6     CONSTRAINT genre_pk PRIMARY KEY (genre_1)
  7  );

Table created.

SQL>

推荐阅读