在Oracle 11g Express Edition中使用sequence
时遇到问题。它既不可访问也不可创建。
我尝试通过该查询获取NEXTVAL
的序列。
select SEQ_PATIENT.nextval from dual;
它显示错误
ORA-02289:序列不存在
然后我尝试CREATE
SYNONYM
进行上述操作,如下所示
create synonym SEQ_PATIENT
for scott.SEQ_PATIENT;
它返回
ORA-00955:名称已被现有对象使用
为什么会这样?
答案 0 :(得分:3)
此:
select SEQ_PATIENT.nextval from dual;
表示您要从名称为SEQ_PATIENT且属于当前架构(即您所连接的用户)的序列中选择下一个值。甲骨文说你没有那个顺序。
此:
create synonym SEQ_PATIENT for scott.SEQ_PATIENT;
尝试为名称为SEQ_PATIENT的对象(属于用户Scott)创建名为SEQ_PATIENT的同义词(不一个序列!)。 Oracle表示名称为SEQ_PATIENT的对象已经存在。
那么:您如何连接到数据库?是哪个用户
的结果是什么
select * from all_objects where object_name = 'SEQ_PATIENT';
它应该告诉您谁拥有它以及它是什么。根据其结果,我们将可以建议进一步的步骤。
答案 1 :(得分:1)
我刚刚使用了DROP SYNONYM
,然后再次使用了CREATE
,效果很好。