用户对表

时间:2018-04-01 20:10:14

标签: sql oracle

我是SQL新手,我想知道为什么我无法将数据插入到创建用户的表中。

我创建了一个用户,授予他对表的插入权限。 我得到表不存在的错误。如果我尝试使用sys用户插入,我没有问题。

我可以与用户建立联系,并已授予CREATE SESSIONINSERT

这是一个学校项目,我必须遵循老师的要求。我们正在开发虚拟机,所以我没有太多选择。

谢谢。

INSERT INTO Montagne VALUES (1, 'test', 12.5, 12.5, 3);

SELECT * FROM montagne;

GRANT resource TO director;

GRANT INSERT ON montagne TO director;

CONNECT director`;

SHOW user;

INSERT INTO montagne VALUES (2, 'test2', 12.5, 12.5, 3);

SELECT * FROM montagne;

复制自OP

发布的答案

这是我得到的结果。

IDMONTAGNE NOMMONTAGNE ALTITUDESOMMET ALTITUDEBASE IDCOMPAGNIE
---------- ----------- -------------- ------------ -----------
         1 test        12.5           12.5         3
Grant succeeded.

Grant succeeded.

Grant succeeded.

Connected. USER is "DIRECTOR"

Error starting at line : 231 in command - INSERT INTO Montagne VALUES (2, 'test2', 12.5, 12.5, 3)
Error at Command Line : 231 Column : 13
Error report - SQL Error: ORA-00942: table or view does not exist 00942. 00000 - "table or view does not exist" *Cause:
*Action:

Error starting at line : 232 in command - SELECT * FROM Montagne Error at Command Line : 232 Column : 15
Error report - SQL Error: ORA-00942: table or view does not exist 00942. 00000 - "table or view does not exist" *Cause:
*Action:

1 个答案:

答案 0 :(得分:1)

以下是您可能会尝试遵循的步骤,以使其发挥作用。

作为SCOTT连接,我正在创建一个将由其他一些用户使用的表

SQL> show user
USER is "SCOTT"
SQL> create table montagne(id number, name varchar2(20));

Table created.

SQL> insert into montagne values (1, 'Test');

1 row created.

现在,创建一个新用户 - DIRECTOR;我将在我的XE数据库中以SYS用户身份执行此操作:

SQL> connect sys@xe as sysdba
Enter password:
Connected.

Session altered.

SQL> create user director identified by dir
  2  default tablespace users
  3  quota unlimited on users;

User created.

SQL> grant create session to director;

Grant succeeded.

返回SCOTT,后者拥有MONTAGNE表以授予对DIRECTOR用户的访问权限

SQL> connect scott@xe
Enter password:
Connected.

Session altered.

SQL> grant insert on montagne to director;

Grant succeeded.

最后,连接作为DIRECTOR并在SCOTT的MONTAGNE表中插入一些内容:

SQL> connect director/dir@xe
Connected.

Session altered.

SQL> insert into scott.montagne values (2, 'Test 2');   --> Note "SCOTT.", used to reference table's owner

1 row created.

SQL> select * from scott.montagne;
select * from scott.montagne
                    *
ERROR at line 1:
ORA-01031: insufficient privileges


SQL>

INSERT工作正常,但SELECT没有。为什么?因为所有者(SCOTT)仅将该表的 INSERT权限授予另一个用户。