【问题标题】:Error: ORA-02289 (2: 10): PL/SQL: ORA-02289错误:ORA-02289(2:10):PL/SQL:ORA-02289
【发布时间】:2012-02-23 01:48:03
【问题描述】:

我正在为 Toad 编写触发器。但我面临一个错误,如

"[Error] ORA-02289 (2: 10): PL/SQL: ORA-02289: sequence does not exist". 

CREATE OR REPLACE TRIGGER ACTSINFO.USERMASTER_INSERT
BEFORE INSERT
ON ACTSINFO.USERMASTER
REFERENCING NEW AS New OLD AS Old
FOR EACH ROW
BEGIN
  SELECT USERMASTER_ID_SEQ.NEXTVAL INTO :NEW.ID FROM dual;
END;

谁能帮助我? 我是蟾蜍的新手。

【问题讨论】:

  • 序列usermaster_id_seq 是否存在于触发器所在的同一架构中? referencing new as new也没有意义,你可以删除整行。
  • 除了在 BEFORE INSERT 中包含 OLD 是模糊的,因为您在执行插入时没有任何旧行。

标签: oracle triggers sequence


【解决方案1】:

Quest Software 只是一个工具。在这种情况下,您对出了什么问题有一个精确的错误。正如消息所说,一个名为 USERMASTER_ID_SEQ 的序列在您的架构中不存在

解决方案可能是在序列名称之前添加架构名称(所有者):

ACTSINFO.USERMASTER_ID_SEQ

您可以通过以下查询找到所有者:

select sequence_owner 
from all_sequences
where sequence_name = 'USERMASTER_ID_SEQ';

如果这没有帮助,则意味着您没有该序列的权利,或者它确实不存在。因此,要么您需要让序列的所有者将 SELECT 授予您的用户,要么您必须在数据库中创建序列。

要创建序列,您可能需要使用 Toad 的 GUI。或者只使用 PL/SQL 语句

CREATE SEQUENCE ACTSINFO.USERMASTER_ID_SEQ
INCREMENT BY 1 
MAXVALUE 99999999999999999999 
MINVALUE 1 
CACHE 20 ;

【讨论】:

  • 太好了,我的回答很有帮助。如果这关闭了问题,您应该将答案标记为已接受。所以这个问题会得到回答。
猜你喜欢
  • 2019-11-08
  • 2021-08-01
  • 1970-01-01
  • 2015-06-30
  • 1970-01-01
  • 2021-09-19
  • 2016-06-01
  • 1970-01-01
  • 2021-09-03
相关资源
最近更新 更多