【问题标题】: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 或 ' '。

【问题讨论】:

    标签: oracle oracle11g


    【解决方案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')。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-30
        • 2023-03-30
        • 2022-12-03
        • 1970-01-01
        相关资源
        最近更新 更多