1. ホーム
  2. sql

[解決済み] シーケンスが存在しない ORA-02289

2022-02-12 03:30:02

質問

SEQUENCEの取得に問題があります。 管理者としてシーケンスを作成し、他のユーザーにselectとalterの権限を付与しました。

CREATE SEQUENCE  "OWNER"."TOT_SEQ"  MINVALUE 1000 MAXVALUE 1000000000 INCREMENT BY 1 START WITH 1000 CACHE 20 NOORDER  NOCYCLE ;

grant select,ALTER on TOT_SEQ to user;
commit;

これをやると.

select sequence_name from all_sequences;

TOT_SEQ

自分のSEQUENCEを一覧で見ることができる。

しかし、私のコードではそのシーケンスにアクセスすることができません。

select <SEQUNCE_name>.nextval from dual;

何が間違っているのでしょうか?

どうすればいいですか?

シーケンスの完全修飾を行う必要があります。

SELECT <owner>.<sequence name>.nextval FROM dual;

または、公開同義語を作成する。

CREATE PUBLIC SYNONYM TOT_SEQ for OWNER.TOT_SEQ;
SELECT TOT_SEQ.nexval FROM DUAL;