Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Błąd SQL:tabela lub widok ORA-00942 nie istnieje

Ponieważ ten post jest najwyższym znalezionym na stackoverflow podczas wyszukiwania „ORA-00942:tabela lub widok nie istnieje wstaw”, chcę wspomnieć o innej możliwej przyczynie tego błędu (przynajmniej w Oracle 12c):tabela używa sekwencji aby ustawić wartość domyślną, a użytkownik wykonujący zapytanie wstawiania nie ma uprawnień wyboru w sekwencji. To był mój problem i zajęło mi niepotrzebnie dużo czasu, aby go rozwiązać.

Aby odtworzyć problem, wykonaj następujące polecenie SQL jako 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;

Następnie wykonaj tę instrukcję wstawiania jako user2 :

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

Wynikiem będzie „ORA-00942:tabela lub widok nie istnieje”, mimo że user2 ma uprawnienia do wstawiania i wybierania na user1.customer table i poprawnie poprzedza tabelę nazwą właściciela schematu. Aby uniknąć problemu, musisz przyznać uprawnienie select do sekwencji:

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. FROM_TZ() Funkcja w Oracle

  2. Jak utworzyć tabelę Oracle z zagnieżdżonymi tabelami typów obiektów?

  3. Czy w bazach danych Oracle jest jakiś typ logiczny?

  4. Sprawdź, czy bieżąca data jest między dwiema datami Oracle SQL

  5. Struktura i typy bloków Oracle PLSQL