Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Lỗi SQL:ORA-00942 bảng hoặc dạng xem không tồn tại

Bởi vì bài đăng này là bài đăng hàng đầu được tìm thấy trên stackoverflow khi tìm kiếm "ORA-00942:bảng hoặc chế độ xem không tồn tại chèn", tôi muốn đề cập đến một nguyên nhân khác có thể gây ra lỗi này (ít nhất là trong Oracle 12c):một bảng sử dụng một chuỗi để đặt giá trị mặc định và người dùng thực hiện truy vấn chèn không có đặc quyền chọn trên chuỗi. Đây là vấn đề của tôi và tôi đã mất nhiều thời gian không cần thiết để tìm ra nó.

Để tái tạo sự cố, hãy thực thi SQL sau dưới dạng 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;

Sau đó, thực hiện câu lệnh chèn này dưới dạng user2 :

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

Kết quả sẽ là "ORA-00942:bảng hoặc chế độ xem không tồn tại" mặc dù user2 không có đặc quyền chèn và chọn trên user1.customer bảng và đặt tiền tố bảng một cách chính xác với tên chủ sở hữu giản đồ. Để tránh sự cố, bạn phải cấp đặc quyền chọn lọc theo trình tự:

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. Đang cố gắng triển khai ứng dụng Oracle-ADF cho Tomcat 7

  2. Thay thế nhanh hơn trong Oracle để CHỌN COUNT (*) TỪ bàn nào đó

  3. Sử dụng Oracle JDeveloper 12c với Cơ sở dữ liệu Oracle 12c trên Nền tảng đám mây Oracle, Phần 2

  4. Oracle Chèn Lựa chọn với thứ tự của

  5. rs.last () cung cấp cho phép toán Không hợp lệ đối với bộ kết quả chỉ chuyển tiếp:cuối cùng