我有一个使用以下代码的简单触发器:
CREATE OR REPLACE TRIGGER started
BEFORE UPDATE OF mgr_start_date ON department
FOR EACH ROW
WHEN (new.mgr_start_date < old.mgr_start_date)
BEGIN
:new.mgr_start_date := :old.mgr_start_date;
DBMS_OUTPUT.PUT_LINE('Rejected backdate of mgr_start_date.');
END;
从赋值语句中删除任何冒号将在编译时声明必须声明变量的错误。我的理解是,这些冒号用于“绑定变量”,并且使用这些类型的变量无需每次都重新解析整个语句。为什么在这种情况下需要绑定变量?为什么将等号视为变量?