Tôi gặp phải lỗi lạ khi cố tạo trình kích hoạt trong cơ sở dữ liệu Oracle 11g của mình bằng cách sử dụng SQL Developer. Dưới đây là những gì tôi đã làm:Sự cố khi tạo trình kích hoạt trong Oracle 11g
bảng của tôi:
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);
Các trình tự:
CREATE SEQUENCE COUNTRY_CODE_ID_SEQ START WITH 1 INCREMENT BY 1;
Trigger:
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;
Tạo bảng và trình tự hoạt động rất tốt, nhưng khi tôi cố gắng tạo trình kích hoạt của mình, tôi nhận được lỗi này:
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
Có ai biết về lỗi này không?
Cảm ơn
Khi bạn khắc phục vấn đề PLScope, bạn sẽ nhận được một mutating kích hoạt ngoại lệ. Trình kích hoạt cấp hàng trên 'COUNTRY_CODE' không được phép truy vấn bảng' COUNTRY_CODE'.Mặc dù có thể giải quyết vấn đề này với trình kích hoạt cấp tuyên bố bổ sung, nhưng dường như bạn không cần phải kiểm tra mỗi lần một hàng được chèn vào xem chuỗi có cần được đặt lại hay không. Dường như nhiều khả năng bạn chỉ muốn đặt chuỗi thành giá trị lớn hơn trong những dịp hiếm hoi đó là nguyên nhân gây ra tình trạng lỗi này. –