创建下表并触发时,出现编译错误的绑定错误。
CREATE TABLE cteam_ExpenseItem (
ExpenseNo NUMBER
);
CREATE TABLE cteam_ExpenseReport (
ERSubmitNo NUMBER
);
CREATE OR REPLACE TRIGGER cteam_Trigger3
BEFORE INSERT OR UPDATE OF ExpenseNo ON cteam_ExpenseItem
FOR EACH ROW
DECLARE
vA cteam_ExpenseItem.ExpenseNo%TYPE;
BEGIN
SELECT ExpenseNo
INTO vA
FROM cteam_ExpenseItem
WHERE ExpenseNo = :NEW.ERSubmitNo;
IF vA <= ERSubmitNo THEN
RAISE_APPLICATION_ERROR(-20000, 'Error');
END IF;
END;
我收到“ NEW.ERSUBMITNO”的错误绑定错误。 我该如何解决这个问题?
答案 0 :(得分:1)
正如@stickybit在评论中指出的,ERSubmitNo
上没有cteam_ExpenseItem
列。但是,即使有,您也不想尝试从定义了触发器的表中读取-您很可能会遇到TABLE IS MUTATING, TRIGGER CANNOT SEE IT
错误。而是使用:OLD
伪行中的值:
CREATE OR REPLACE TRIGGER cteam_Trigger3
BEFORE INSERT OR UPDATE OF ExpenseNo ON cteam_ExpenseItem
FOR EACH ROW
DECLARE
vA cteam_ExpenseItem.ExpenseNo%TYPE;
BEGIN
IF :OLD.ExpenseNo <= :NEW.ExpenseNo THEN
RAISE_APPLICATION_ERROR(-20000, 'Error');
END IF;
END;
我正在猜测,这就是您要尝试执行的操作-如果没有,您可以根据需要折叠,纺锤或切割。 :-)