对于只读用户,为什么DROP和INSERT会因不同的错误而失败

时间:2014-03-04 16:09:10

标签: sql oracle

我有一个数据库用户,对表example_table具有只读权限。

Select * from example_table; 

工作正常。

insert into example_table values('example');

按预期失败。 “特权不足”

drop table example_table;

失败,显示错误消息“表或视图不存在”

我的问题是。为什么最后两个例子都不会因“权限不足”而失败,为什么在ddl语句中使用它甚至看不到表?

Oracle 10g

谢谢。

1 个答案:

答案 0 :(得分:3)

如果没有同义词,您的SELECT会失败,因此您不是直接从表中选择,而是通过同义词。

DROP TABLEDDLsynonyms can't be used in most DDL statements。因此,在您的情况下,语句在真实对象之后(默认情况下在当前架构中,如果您尚未指定所有者),则找不到该名称的任何对象,因此(无可置疑的是无用的)错误消息。

如果你写了:

drop table owner.example_table;

然后您就会收到预期的错误消息。