【问题标题】:Oracle: Rename column gives "ORA-00903: invalid table name" error even when no constraint or index is thereOracle:即使没有约束或索引,重命名列也会出现“ORA-00903:无效表名”错误
【发布时间】:2019-12-01 01:50:11
【问题描述】:
RENAME COLUMN table-Name.simple-Column-Name TO simple-Column-Name

当我尝试重命名列时,我在所有列上都收到以下错误消息:

RENAME COLUMN EMP_NEW.EMPLOYEE_ID TO EMPLOYEEID
Error report -
ORA-00903: invalid table name
00903. 00000 -  "invalid table name"
*Cause:    
*Action:

以下是版本

Oracle Database 12c Release 12.1.0.1.0 - 64bit Production
PL/SQL Release 12.1.0.1.0 - Production
"CORE   12.1.0.1.0  Production"
TNS for IBM/AIX RISC System/6000: Version 12.1.0.1.0 - Production
NLSRTL Version 12.1.0.1.0 - Production

有什么建议可以解决这个问题吗? (注意我已经从一些现有的表中创建了结构并且没有复制任何东西,即没有索引,没有任何约束,所以它很简单创建)

【问题讨论】:

  • @user7294900:没有
  • 重命名列名的语法是ALTER TABLE table_name RENAME old_column_name TO new_column_name

标签: sql oracle oracle12c table-rename


【解决方案1】:

正确的语法是

ALTER TABLE table_name RENAME COLUMN old_name TO new_name;

使用以下。但确保 EMP_NEW 表存在于您用于登录的架构中

ALTER TABLE EMP_NEW RENAME COLUMN EMPLOYEE_ID TO EMPLOYEEID;

【讨论】:

    【解决方案2】:

    编辑

    不要使用这种语法,这是derby 语法,使用@Gro 答案(alter table

    确保表与用户不在不同的方案中,或使用方案名称。

    还要确保没有任何open cursors that reference the column

    限制:如果有任何打开的游标引用正在更改的列,则不允许使用 RENAME COLUMN 语句。

    【讨论】:

    • 我可以使用 alter 但不能重命名 :(。即使我删除了表并重新创建了
    • @fatherazrael alter table 是 alter table 的标准方法
    • @fatherazrael - As the Oracle SQL reference states: “使用 RENAME 语句重命名表、视图、序列或私有同义词” 所以不是列。
    • @APC 所以声明仅在 Oracle 10g 之前有效?
    • 不。即使在 10g 中,Not RENAME A TO B 也不适用于列。来自the 10g SQL ref“您不能直接使用此语句重命名列。但是,您可以使用 ALTER TABLE ... rename_column_clause 重命名列。”
    猜你喜欢
    • 2015-01-07
    • 2016-12-19
    • 2016-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-31
    相关资源
    最近更新 更多