sql >> データベース >  >> RDS >> Oracle

SQLエラー:ORA-00942テーブルまたはビューが存在しません

    この投稿は、「ORA-00942:テーブルまたはビューが存在しません挿入」を検索したときにstackoverflowで見つかった一番上の投稿であるため、このエラーの別の考えられる原因について説明します(少なくともOracle 12cでは):テーブルはシーケンスを使用しますデフォルト値を設定し、挿入クエリを実行するユーザーには、シーケンスに対する選択権限がありません。これが私の問題であり、それを理解するのに不必要に長い時間がかかりました。

    問題を再現するには、次のSQLを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;
    

    次に、この挿入ステートメントをuser2として実行します。 :

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

    user2であっても、結果は「ORA-00942:テーブルまたはビューが存在しません」になります。 user1.customerに対する挿入および選択権限があります テーブルであり、テーブルの前にスキーマ所有者名が正しく付けられています。この問題を回避するには、シーケンスに対する選択権限を付与する必要があります。

    grant select on seq_customer_id to user2;
    


    1. SQLServer2008でトランザクションログを表示する方法

    2. MySQLの新しいテーブルにデータをコピーします

    3. 簡単な全文検索をお探しですか? MySQL InnoDB+CakePHPとWordStemmingをお試しください

    4. JSON_VALUE()SQL Server(T-SQL)の例