这是我的SQL触发器,并且假设将重新排序值更改为Y或N,具体取决于ON_HAND是否小于或大于MINIMUM。问题是它完全忽略了set语句。我必须以不同的方式安排这些吗?
CREATE OR REPLACE TRIGGER TRG_REORDER
AFTER UPDATE OF ON_HAND, MINIMUM ON PART
BEGIN
IF ON_HAND <= MINIMUM THEN
SET REORDER = 'Y';
ELSE ON_HAND > MINIMUM
SET REORDER = 'N';
END IF;
END;
答案 0 :(得分:1)
我不知道Oracle触发器,但我怀疑你想要一个 BEFORE 触发器和一个类似于此的赋值。
:new.REORDER := case when :new.ON_HAND <= :new.MINIMUM then 'Y' else 'N' end;
点击此处开始: http://www.techonthenet.com/oracle/triggers/before_update.php
答案 1 :(得分:1)
触发器主体使用PL / SQL语法,而不是SQL。因此,对于作业,您需要:=
而不是set
。
您的代码有一些其他语法错误。
:new
值。 所以解决所有问题,现在应该适用于你(警告:未经测试的代码)。
CREATE OR REPLACE TRIGGER TRG_REORDER
before UPDATE OF ON_HAND, MINIMUM ON PART
for each row
BEGIN
IF :new.ON_HAND <= :new.MINIMUM THEN
:new.REORDER = 'Y';
ELSE
:new.REORDER = 'N';
END IF;
END;