我有一个数据库用户,对表example_table具有只读权限。
Select * from example_table;
工作正常。
insert into example_table values('example');
按预期失败。 “特权不足”
drop table example_table;
失败,显示错误消息“表或视图不存在”
我的问题是。为什么最后两个例子都不会因“权限不足”而失败,为什么在ddl语句中使用它甚至看不到表?
Oracle 10g
谢谢。
答案 0 :(得分:3)
如果没有同义词,您的SELECT
会失败,因此您不是直接从表中选择,而是通过同义词。
DROP TABLE
是DDL和synonyms can't be used in most DDL statements。因此,在您的情况下,语句在真实对象之后(默认情况下在当前架构中,如果您尚未指定所有者),则找不到该名称的任何对象,因此(无可置疑的是无用的)错误消息。
如果你写了:
drop table owner.example_table;
然后您就会收到预期的错误消息。