CREATE OR REPLACE TRIGGER update_salary
BEFORE INSERT OR UPDATE on employees
FOR EACH ROW
BEGIN
IF :new.salary
上面这个触发器是在employee表上定义的,它会在每次有新的一行被插入或者更新时被触发。在这个触发器里,我们使用了“:new”伪列来检查新插入或者更新的值是否小于0,如果小于0,就将其设定为0。
“new.”字段在触发器中的另一个常见用途是在insert语句中设置默认值。当执行insert语句时,Oracle首先会执行触发器,如果触发器中定义了“new.”字段,则会将其值设置为默认值。下面是一个示例:
CREATE OR REPLACE TRIGGER set_default_values
BEFORE INSERT on employees
FOR EACH ROW
BEGIN
IF :new.hire_date IS NULL THEN
:new.hire_date := SYSDATE;
END IF;
IF :new.salary IS NULL THEN
:new.salary := 5000;
END IF;
END;
上面这个触发器是在employee表上定义的,它会在每次插入一行数据时被触发。在这个触发器里,我们使用了“new.”字段来设置在insert语句中没有设置的默认值。例如,如果在insert语句中没有设置hire_date字段的值,则该字段将被设置为当前日期,如果没有设置salary字段的值,则该字段将被设置为5000。
总之,通过使用“new.”字段,我们可以在Oracle触发器中轻松地读取和修改正在插入或更新的数据。它还允许我们在insert语句中设置默认值。这种功能非常重要,因为它可以帮助我们更好地管理和优化我们的数据库。