PL / SQL错误ORA-01403未找到数据

时间:2013-12-10 04:48:36

标签: oracle plsql triggers

在创建以下触发器后尝试插入表时,我收到ORA-01403没有发现数据错误:

CREATE OR REPLACE TRIGGER unic_disc
BEFORE insert ON disciplina
FOR EACH ROW
DECLARE
    CURSOR cursor_professor IS 
    SELECT matricula_professor
    FROM disciplina;
    temp_prof disciplina.matricula_professor%type;
BEGIN
    OPEN cursor_professor;
    FETCH cursor_professor INTO temp_prof;
    CLOSE cursor_professor;
END;
/

(变量在portugues中,但它们的名称不会干扰逻辑。) 表创建,

CREATE TABLE disciplina (
    codigo_disciplina NUMBER,
    ementa VARCHAR2(50) NOT NULL,
    conteudo_programatico VARCHAR2(100) NOT NULL,
    matricula_professor NUMBER NOT NULL,
    CONSTRAINT disciplina_pk PRIMARY KEY (codigo_disciplina),
    CONSTRAINT disciplina_matricula_prof_fk FOREIGN KEY (matricula_professor)         REFERENCES professor (matricula_professor)
);

我的插入查询:

INSERT INTO disciplina (codigo_disciplina,ementa,conteudo_programatico,matricula_professor) VALUES (7,'E6', 'C6',7777);
编辑:我认为错误是因为我从同一个表中选择我正在编辑。

2 个答案:

答案 0 :(得分:1)

我只需要在DECLARE和它工作之后添加PRAGMA_AUTONOMOUS_TRANSACTION。朋友告诉我,我自己找不到它。

答案 1 :(得分:0)

是的,您使用触发器(插入前),最初表没有任何数据和

当您尝试在表中插入数据时,在插入之前触发了触发器,

返回没有找到记录。如果您确切地指定了您的要求,我将

尝试帮助您处理代码。