将保留字重命名为列名;在一个上工作,在另一个上失败

时间:2015-04-11 12:27:15

标签: sql oracle oracle10g

我正在两个表中重命名两列,这两列都被命名为LEVEL,这是一个保留字。

让我感到困惑的是,我在这两个表上运行相同的命令,但只有其中一个失败。以下是命令:

--this works
ALTER TABLE notificationsubscriptions RENAME COLUMN "LEVEL" TO nlevel;
--this doesn't
ALTER TABLE notifications RENAME COLUMN "LEVEL" TO nlevel;

第二个语句导致以下错误:

Error starting at line : 9 in command -
ALTER TABLE notifications RENAME COLUMN "LEVEL" TO nlevel
Error report -
SQL Error: ORA-00900: invalid SQL statement
00900. 00000 -  "invalid SQL statement"
*Cause:    
*Action:

这两列的数据类型(编号)相同。我很困惑 - 为什么这个命令对其中一个表有效而对另一个表不起作用?

数据库正在运行Oracle 10.2。

1 个答案:

答案 0 :(得分:1)

尝试从索引和/或外键约束中删除此列上存在的任何链接

  • 删除索引
  • 重命名列
  • 使用新名称列
  • 创建索引