谁能帮我解决我创建的触发器插入问题?

Posted

技术标签:

【中文标题】谁能帮我解决我创建的触发器插入问题?【英文标题】:can anyone help me with the trigger insert problem i created? 【发布时间】:2022-01-14 23:19:24 【问题描述】:

所以我做了一个这样的触发器插入:

create or replace trigger discount
after insert on transaction
for each row
begin
if (new.desc_date = 'Y') then
insert into desc_transaction(discount) values (new.discount = '0.1');
end if;
end;
/

警告:触发器创建时出现编译错误。

show error;
3/1      PL/SQL: SQL Statement ignored
3/54     PL/SQL: ORA-00917: missing comma

如何解决。

数据: desc_date 仅包含 yes 和 no 因为如果 11 月打折而 10 月没有打折。 对于折扣部分包含 0.1 和 null,因此如果 desc_date 为 yes,则为 0.1,否则将为 null 或 ' '。

【问题讨论】:

【参考方案1】:

语法错误。应该是

CREATE OR REPLACE TRIGGER discount
   AFTER INSERT
   ON transaction
   FOR EACH ROW
BEGIN
   IF :new.desc_date = 'Y'
   THEN
      INSERT INTO desc_transaction (discount)
           VALUES (0.1);
   END IF;
END;
/

或者,可能更好,

CREATE OR REPLACE TRIGGER discount
   AFTER INSERT
   ON transaction
   FOR EACH ROW
BEGIN
   INSERT INTO desc_transaction (discount)
        VALUES (CASE WHEN :new.desc_date = 'Y' THEN 0.1 ELSE NULL END);
END;
/

【讨论】:

【参考方案2】:

insert 语句的语法不正确。请尝试以下操作:

insert into desc_transaction(discount) values ('0.1');

旁注 - discount 可能不是 varchar 列。如果这个猜测是正确的,那么您应该使用数字文字 (0.1),而不是像您目前使用的字符串文字 ('0.1')。

【讨论】:

以上是关于谁能帮我解决我创建的触发器插入问题?的主要内容,如果未能解决你的问题,请参考以下文章

使用 django 频道发生 onmessage 事件时如何触发通知声音?

使用 ExtJS 在带有 GridPanel 的窗口上获取值

谁能帮我解决这个问题

谁能帮我解决这个 xcode 问题?

keyPress事件未在Android手机中触发

谁能帮我解决《当前页面脚本发生错误》的问题?