我是SQL新手,我想知道为什么我无法将数据插入到创建用户的表中。
我创建了一个用户,授予他对表的插入权限。
我得到表不存在的错误。如果我尝试使用sys
用户插入,我没有问题。
我可以与用户建立联系,并已授予CREATE SESSION
和INSERT
。
这是一个学校项目,我必须遵循老师的要求。我们正在开发虚拟机,所以我没有太多选择。
谢谢。
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;
这是我得到的结果。
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:
答案 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权限授予另一个用户。