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;