sql >> Database >  >> RDS >> Oracle

SQL-fout:ORA-00942-tabel of weergave bestaat niet

Omdat dit bericht de bovenste is die wordt gevonden op stackoverflow bij het zoeken naar "ORA-00942:table or view bestaat niet invoegen", wil ik een andere mogelijke oorzaak van deze fout noemen (tenminste in Oracle 12c):een tabel gebruikt een reeks om een ​​standaardwaarde in te stellen en de gebruiker die de invoegquery uitvoert, heeft geen selectierecht voor de reeks. Dit was mijn probleem en het kostte me onnodig veel tijd om erachter te komen.

Om het probleem te reproduceren, voert u de volgende SQL uit als 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;

Voer vervolgens deze insert-instructie uit als user2 :

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

Het resultaat is "ORA-00942:tabel of weergave bestaat niet", hoewel user2 heeft wel invoeg- en selectierechten op user1.customer tabel en wordt de tabel correct voorafgegaan door de naam van de schema-eigenaar. Om het probleem te vermijden, moet u select privileges toekennen aan de reeks:

grant select on seq_customer_id to user2;


  1. Afbeelding direct in database opslaan of als base64-gegevens?

  2. SET-operators in SQL

  3. Is het mogelijk om een ​​recursieve SQL-query te maken?

  4. Volledig beheerde PostgreSQL-hosting op AWS en Azure wordt op tijd gelanceerd voor verouderde migraties