谁能帮我解决我创建的触发器插入问题?
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 事件时如何触发通知声音?