【发布时间】:2020-12-10 01:12:20
【问题描述】:
当罚款(单独的表格)金额达到特定人员的 >=10 时,我正在尝试将 studentstaff 表中的暂停值从“否”更改为“是”。我也尝试过使用 IF,但似乎没有任何效果,因为我不断收到此错误:ORA-04079: invalid trigger specification。 “金额 NUMBER(8);”在代码中,因为它要求我申报金额。我正在使用 Oracle SQL。提前致谢。
CREATE TRIGGER new_suspension
AFTER UPDATE ON fine
FOR EACH ROW
amount NUMBER(8);
BEGIN
CASE
WHEN Amount >= 10 THEN
UPDATE studentstaff
SET suspensions = 'yes'
WHERE library_card_no = '419746';
END CASE;
END;
/
【问题讨论】:
-
为了从更改的行中引用
amount,您需要使用:old.amount或:new.amount。library_card_no过滤器是否也需要从您的触发行中取出? -
@AndrewSayer library_card_no 指的是我想更改的特定人员的暂停状态,但我认为没有必要。我对 SQL 很陌生,但据我所知,我应该像这样使用 :new 。
CREATE TRIGGER new_suspension AFTER UPDATE ON fine FOR EACH ROW amount NUMBER(8); BEGIN CASE WHEN (new.Amount >= 10) THEN UPDATE studentstaff SET suspensions = 'yes'; END CASE; END; /但我仍然遇到同样的错误。
标签: oracle triggers sql-update