【发布时间】:2021-04-04 00:33:47
【问题描述】:
问题:编写一个触发器,该触发器将在每次更新行表(插入、更新或删除新行)时更新发票小计。包括用于测试插入、更新和删除的 SQL 语句。
我发现很难正确理解触发器,我不知道为什么。我了解它的基本概念(至少我认为我了解),但我似乎无法理解如何回答我的问题。以下代码是我尝试回答上述问题:
create or replace trigger update_subtotal
after insert or update or delete
on invoice
for each row
begin
insert into line ('inv_number', 'line_number', 'p_code', 'line_units', 'line_price')
values ('1009', '3', '12345-6t', '1', '123.45');
end;
select * from line;
运行此代码后,我遇到了以下错误:
Errors: TRIGGER UPDATE_SUBTOTAL
Line/Col: 3/1 PL/SQL: SQL Statement ignored
Line/Col: 3/19 PL/SQL: ORA-00928: missing SELECT keyword
Line/Col: 17/1 PLS-00103: Encountered the symbol "SELECT"
我正在使用 Oracle Live。
简而言之:帮助。
【问题讨论】:
-
听起来好像有两张表,一张用于发票,一张用于行项目。您还没有向我们展示这些表格的实际外观。帮助我们帮助您完成一个测试用例——向我们展示如何创建表格以及您拥有哪些数据。如果您使用的是 Oracle LiveSQL,请将您正在处理的内容的链接发送给我们,以便我们自己查看。
-
[livesql.oracle.com/apex/… @JustinCave 这是脚本文件的链接。