我正在尝试使用以下语法更改表上的列:
ALTER TABLE MY_SCHEMA.latest_workspace MODIFY (short_name VARCHAR2(10) NOT NULL);
这是我遇到的错误:
命令中从第 1 行开始的错误:ALTER TABLE MY_SCHEMA.latest_workspace MODIFY(短名称 VARCHAR2(10) NOT NULL) 报错:SQL错误:ORA-00942:表或视图不存在 00942. 00000 - “表或视图不存在” *原因:
*行动:
但是,我可以很好地查看该表并使用以下命令进行查询:
SELECT short_name FROM MY_SCHEMA.latest_workspace;
此外,所有正确的权限都授予我登录的用户。还有其他我忘记的事情可能会导致 ALTER 发生这种情况吗?
谢谢!
看起来
MY_SCHEMA.latest_workspace
不是一张桌子。 它可能是一个视图,或者可能是其他模式中对象的同义词。 尝试这个查询来找出答案:
select object_type
from user_objects
where object_name = 'LATEST_WORKSPACE';
您随后需要采取的行动取决于结果。
我发现解决此问题的唯一方法是重新创建表。 (重命名、删除约束和索引、重新创建原始表、插入记录)。
找不到原因,但听起来像是一个错误。
我也遇到了这个问题,但这是因为表处于不同的架构中。我删除了一张表并在相同的架构中创建了它,所以它起作用了。
我也遇到这个问题了。就我而言,它结果是一个同义词。在运行帖子发布后,这就是我修复它的方法。
首先检查表是否存在
SELECT table_name FROM user_tables WHERE table_name = 'latest_workspace';
返回空白。
然后检查该表是否存在于另一个模式中
SELECT owner, table_name FROM all_tables WHERE table_name ='latest_workspace';
它返回了一个很长的所有者列表,但我的所有者(SCHEMA)不在列表中。
然后我检查了SYNONYM
SELECT owner,table_owner, table_name FROM all_synonyms WHERE synonym_name = 'latest_workspace';
它很受欢迎。
然后我在alter语句中使用
table_owner
来执行它。
希望这有帮助!