尝试使用SQL Developer在Oracle 11g数据库中创建触发器时出现了一个奇怪的错误。这是我做的:
我的表:
CREATE TABLE COUNTRY_CODE(
ID NUMBER(19,0) PRIMARY KEY NOT NULL,
Code VARCHAR2(2) NOT NULL,
Description VARCHAR2(50),
created TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
created_by VARCHAR2(40) DEFAULT USER,
last_updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
last_updated_by VARCHAR2(40) DEFAULT USER,
archived CHAR(1) DEFAULT '0' NOT NULL );
序列:
CREATE SEQUENCE COUNTRY_CODE_ID_SEQ START WITH 1 INCREMENT BY 1;
触发器:
CREATE OR REPLACE TRIGGER COUNTRY_CODE_TRIGGER
BEFORE INSERT ON COUNTRY_CODE
FOR EACH ROW
DECLARE
max_id number;
cur_seq number;
BEGIN
IF :new.id IS NULL THEN
SELECT COUNTRY_CODE_ID_SEQ.nextval
INTO :new.id
FROM dual;
ELSE
SELECT GREATEST(NVL(MAX(id),0), :new.id)
INTO max_id
FROM COUNTRY_CODE;
SELECT COUNTRY_CODE_ID_SEQ.nextval
INTO cur_seq
FROM dual;
WHILE cur_seq < max_id
LOOP
SELECT COUNTRY_CODE_ID_SEQ.nextval
INTO cur_seq
FROM dual;
END LOOP;
END IF;
END;
创建表和序列非常有效,但是当我尝试创建触发器时,我收到此错误:
Error report:
ORA-00603: ORACLE server session terminated by fatal error
ORA-00600: internal error code, arguments: [kqlidchg0], [], [], [], [], [], [], [], [], [], [], []
ORA-00604: error occurred at recursive SQL level 1
ORA-00001: unique constraint (SYS.I_PLSCOPE_SIG_IDENTIFIER$) violated
00603. 00000 - "ORACLE server session terminated by fatal error"
*Cause: An ORACLE server session is in an unrecoverable state.
*Action: Login to ORACLE again so a new server session will be created
有人知道这个错误吗?
由于
答案 0 :(得分:48)
我终于找到了问题的答案:
添加:
ALTER SESSION SET PLSCOPE_SETTINGS = 'IDENTIFIERS:NONE';
或者在Oracle SQL Developer中:
这解决了问题......
答案 1 :(得分:3)
这可能是here.
的解决方案答案 2 :(得分:3)
我没有其他解决方案(并且没有仅仅评论的声誉),但这里有一些信息可能有助于让某人在正确的轨道上解决这个问题,同时仍然使用PL / Scope。
我遇到了类似的问题,调查PL / Scope功能帮助我了解问题可能出在哪里。对于我的问题,我试图创建一个触发器,同样出现了同样的错误。我改变了触发器的主体无济于事,但更改名称工作正常。
似乎PL / Scope在删除之前保留了有关第一个实例化触发器的信息。对触发器的查询显示我的触发器肯定会被丢弃,但对(PL / Scope)标识符(“all_identifiers”)的查询显示它仍然存在。
关于PL / Scope的一些信息在这里: http://www.oracle.com/technetwork/testcontent/o67asktom-101004.html
这里的第8章(11g文档)有更多信息: http://docs.oracle.com/cd/B28359_01/appdev.111/b28424.pdf