【问题标题】:Create Table - Oracle APEX Error: What is causing the errors in my CREATE TABLE sql script?创建表 - Oracle APEX 错误:是什么导致了我的 CREATE TABLE sql 脚本中的错误?
【发布时间】:2021-05-05 23:23:18
【问题描述】:

我在为 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)
);

【问题讨论】:

    标签: sql oracle-apex create-table


    【解决方案1】:

    在 company 、genre 和 DIRECTOR 表中,您是说在 IMDB_ID 列上创建一个主键,该列在这些表中都不存在,因此您必须先添加它们。

    不过我猜根据设计,imdb_id 实际上是那些引用电影表的表中的外键

    【讨论】:

      【解决方案2】:

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

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

      已修复,您的代码可能如下所示(我并不是说这是您真正想要的,但是 - 根据您目前发布的内容 - 可能是一个很好的起点)。

      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>
      

      【讨论】:

        猜你喜欢
        • 2016-02-27
        • 1970-01-01
        • 2021-05-04
        • 2012-05-31
        • 2013-10-31
        • 1970-01-01
        • 2016-05-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多