sql >> Databáze >  >> RDS >> Oracle

Chyba SQL:Tabulka nebo pohled ORA-00942 neexistuje

Protože tento příspěvek je nejlepším příspěvkem nalezeným na stackoverflow při hledání „ORA-00942:tabulka nebo pohled neexistuje vložit“, chci zmínit další možnou příčinu této chyby (alespoň v Oracle 12c):tabulka používá sekvenci nastavit výchozí hodnotu a uživatel provádějící vkládací dotaz nemá výběrové oprávnění pro sekvenci. To byl můj problém a trvalo mi zbytečně dlouho, než jsem na to přišel.

Chcete-li problém reprodukovat, spusťte následující 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;

Poté proveďte tento příkaz vložení jako user2 :

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

Výsledek bude „ORA-00942:tabulka nebo pohled neexistuje“, i když user2 má oprávnění pro vkládání a výběr na user1.customer tabulka a správně před tabulkou uvádí jméno vlastníka schématu. Abyste se tomuto problému vyhnuli, musíte sekvenci udělit výběrové oprávnění:

grant select on seq_customer_id to user2;


  1. SMALLDATETIMEFROMPARTS() Příklady v SQL Server (T-SQL)

  2. Znovu a znovu! Správa opakujících se událostí v datovém modelu

  3. Vývoj PostgreSQL pro Windows, část 1

  4. Jak používat sql*plus v příkazovém skriptu Windows k řízení toku?