我运行了这些语句:
create table SAMPLE(
ID INT
);
INSERT INTO SAMPLE VALUES(1);
COMMIT;
GRANT INSERT, SELECT, UPDATE, DELETE ON SAMPLE TO NEWLEC;
COMMIT;
但 Eclipse 说找不到表。
我该如何解决?
您以newlec
用户身份连接,对表的非限定引用将在该架构中查找它们,而不是在其他用户下。
您可以限定表名:
SELECT * FROM real_owner.SAMPLE
例如,如果您在创建表时连接为 HR,您将执行以下操作:
SELECT * FROM HR.SAMPLE
您还可以创建一个公开的同义词,这可能有点矫枉过正,并可能导致其他问题和混乱;newlec
或为指向 rea 表的用户创建一个私有同义词,例如:
CREATE SYNONYM SAMPLE FOR real_owner.SAMPLE;
SELECT * FROM SAMPLE;
所以不合格的查询现在看到了同义词,并通过它看到了其他人拥有的真实表。或者您可以设置您的current_schema
登录后:
ALTER SESSION SET CURRENT_SCHEMA=real_owner;
SELECT * FROM SAMPLE;
所以所有不合格的查询现在都看到该用户拥有的对象,而不是newlec
.
但是,如果这是初学者课程的基本作业,那么您可能只需要限定名称。