【发布时间】:2021-08-05 17:43:37
【问题描述】:
我在 Oracle 中创建了一个trigger。我想要的是,无论是插入新行还是更新任何现有行,我想分别根据某些条件 Insert/Update 特定列。
下面是我的触发器,但它给了我一些错误。
create or replace TRIGGER TRG_UPD_RRSOC_ZONAL_NAME
BEFORE UPDATE ON TBL_RRSOC_STORE_INFO
FOR EACH ROW
BEGIN
IF NEW.SLP_ZONAL_HEAD_NAME = 'ABC' then ZONE_NAME = 'North';
IF NEW.SLP_ZONAL_HEAD_NAME = 'XYZ 'then ZONE_NAME = 'South';
END;
出了什么问题,因为我收到以下错误:
错误(4,48):PLS-00103:在预期以下之一时遇到符号“=”::=。 (@%;
【问题讨论】:
-
您需要引用带有前导冒号的
:new伪记录。我不确定您的IF声明应该是什么意思——您没有将:new.slp_zonal_head_name与任何东西进行比较。假设您的意图是为:new.zone_name分配一个值,您将使用:=运算符进行分配。=运算符用于比较。 -
@JustinCave:我想要的是,每当更新现有行时,我都想更新
:new.zone_name。我添加了IF,因为我还有 2-3 个条件。请查看我更新的问题
标签: oracle triggers insert-update