INSA上的ORA-00942到新创建的表

时间:2015-07-16 16:38:29

标签: oracle flyway

我正在评估FLYWAY并运行一个非常简单的脚本,该脚本创建一个新表并向该表插入一行。该表创建成功但我在INSERT上收到ORA-942错误。我已经尝试了使用大/小写以及引用和不带引号的模式和表名称的每个排列。我也尝试将INSERT语句从CREATE语句分离到不同的脚本中 - 一切都无济于事。任何人都可以帮助解释INSERT语句的flyway格式需求吗?

以下是我最近尝试的陈述。我已尝试使用table_name周围的引号使用相同的语句,所有小写,模式周围没有引号 - 没有任何作用。作为SYS直接登录到数据库,我可以用这个命令描述表: desc“FLYWAY_USER”.department

CREATE TABLE "FLYWAY_USER".DEPARTMENT
   ( DEPARTMENT_id      NUMBER(3)         NOT NULL,
     DEPARTMENT         VARCHAR2(64)      NOT NULL,
     display_name       VARCHAR2(64)      NOT NULL,
     description        VARCHAR2(400),
     create_date        DATE              NOT NULL,
     update_date        DATE              NOT NULL,
     created_by         VARCHAR2(80)      NOT NULL,
     updated_by         VARCHAR2(80)      NOT NULL )
TABLESPACE users;

INSERT INTO "FLYWAY_USER".DEPARTMENT
    ( DEPARTMENT_id,
      DEPARTMENT,
      display_name,
      description,
      create_date,
      update_date,
      created_by,
     updated_by )
VALUES
    ( ( SELECT Nvl( Max(DEPARTMENT_id), 0) + 1  FROM  DEPARTMENT ),
         'HUMAN_RESOURCES',
         'Human Resources',
         'The best place to eat smores or get a raise.',
         Sysdate, 
         Sysdate,
        'AT09001',
        'AT09001' );

由于

1 个答案:

答案 0 :(得分:1)

  

以SYS

的形式直接记录到数据库中

更好地使用专用应用程序用户。

无论如何,如果您使用对象的架构所有者(FLYWAY_USER)的其他用户,则必须符合所有您的参考资料。

尤其

VALUES
( ( SELECT Nvl( Max(DEPARTMENT_id), 0) + 1  FROM  DEPARTMENT ),

应该是

VALUES
( ( SELECT Nvl( Max(DEPARTMENT_id), 0) + 1  FROM  FLYWAY_USER.DEPARTMENT ),