Debido a que esta publicación es la principal que se encuentra en stackoverflow al buscar "ORA-00942:la tabla o la vista no existe insertada", quiero mencionar otra posible causa de este error (al menos en Oracle 12c):una tabla usa una secuencia para establecer un valor predeterminado y el usuario que ejecuta la consulta de inserción no tiene privilegios de selección en la secuencia. Este era mi problema y me llevó un tiempo innecesariamente largo resolverlo.
Para reproducir el problema, ejecute el siguiente SQL como 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;
Luego, ejecute esta declaración de inserción como user2
:
insert into user1.customer (name,surname) values ('michael','jackson');
El resultado será "ORA-00942:la tabla o vista no existe" aunque user2
tiene privilegios de inserción y selección en user1.customer
table y está prefijando correctamente la tabla con el nombre del propietario del esquema. Para evitar el problema, debe otorgar privilegios de selección en la secuencia:
grant select on seq_customer_id to user2;