Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Kesalahan SQL:tabel atau tampilan ORA-00942 tidak ada

Karena posting ini adalah yang teratas yang ditemukan di stackoverflow ketika mencari "ORA-00942:tabel atau tampilan tidak ada sisipkan", saya ingin menyebutkan kemungkinan penyebab lain dari kesalahan ini (setidaknya di Oracle 12c):tabel menggunakan urutan untuk menetapkan nilai default dan pengguna yang menjalankan kueri penyisipan tidak memiliki hak pilih pada urutan. Ini adalah masalah saya dan saya butuh waktu lama untuk menyelesaikannya.

Untuk mereproduksi masalah, jalankan SQL berikut sebagai 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;

Kemudian, jalankan pernyataan penyisipan ini sebagai user2 :

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

Hasilnya akan menjadi "ORA-00942:tabel atau tampilan tidak ada" meskipun user2 memang memiliki hak istimewa menyisipkan dan memilih pada user1.customer tabel dan dengan benar mengawali tabel dengan nama pemilik skema. Untuk menghindari masalah, Anda harus memberikan hak pilih pada urutan:

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. 7 hal yang perlu diketahui tentang kompartemen di Oracle Cloud Infrastructure

  2. Bagaimana Mendapatkan BLOB dari File di PL/SQL?

  3. Mengonfigurasi Replikasi Basis Data Heterogen – SQL Server ke Oracle

  4. Berapa panjang maksimum nama tabel di Oracle?

  5. Kapan Oracle mengindeks nilai kolom nol?