Oracle
 sql >> база данни >  >> RDS >> Oracle

SQL грешка:ORA-00942 таблица или изглед не съществува

Тъй като тази публикация е най-горната, намерена в stackoverflow при търсене на „ORA-00942:таблица или изглед не съществува вмъкване“, искам да спомена друга възможна причина за тази грешка (поне в Oracle 12c):таблица използва последователност за да зададете стойност по подразбиране и потребителят, изпълняващ заявката за вмъкване, няма привилегия за избор на последователността. Това беше моят проблем и ми отне ненужно много време, за да го разбера.

За да възпроизведете проблема, изпълнете следния SQL като user1 :

create sequence seq_customer_id;

create table customer (
c_id number(10) default seq_customer_id.nextval primary key,
name varchar(100) not null,
surname varchar(100) not null
);

grant select, insert, update, delete on customer to user2;

След това изпълнете този израз за вмъкване като user2 :

insert into user1.customer (name,surname) values ('michael','jackson');

Резултатът ще бъде "ORA-00942:таблица или изглед не съществува", въпреки че user2 има привилегии за вмъкване и избор на user1.customer таблица и правилно поставя префикс на таблицата с името на собственика на схемата. За да избегнете проблема, трябва да предоставите привилегия за избор на последователността:

grant select on seq_customer_id to user2;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да проверя NLS_LANG на клиента?

  2. Можем ли да имаме множество WITH AS в един sql - Oracle SQL

  3. Oracle - Как да получа действителния размер на конкретен РОД?

  4. Функция SQRT() в Oracle

  5. Заключване на Liquibase - причини?