在创建以下触发器后尝试插入表时,我收到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);
编辑:我认为错误是因为我从同一个表中选择我正在编辑。
答案 0 :(得分:1)
我只需要在DECLARE和它工作之后添加PRAGMA_AUTONOMOUS_TRANSACTION。朋友告诉我,我自己找不到它。
答案 1 :(得分:0)
是的,您使用触发器(插入前),最初表没有任何数据和
当您尝试在表中插入数据时,在插入之前触发了触发器,
返回没有找到记录。如果您确切地指定了您的要求,我将
尝试帮助您处理代码。