oracle 设置 触发 器 以 获取 列 中 所有 值 的 总和

fjnneemd  于 2022-11-22  发布在  Oracle
关注(0)|答案(2)|浏览(183)

我正在SQL中创建一个触发器,以便在更改后对列中的所有值求和。当我尝试执行此操作时,遇到了错误:`

CREATE OR REPLACE TRIGGER GET_NUM_ATHLETES 
AFTER DELETE OR UPDATE OF NUM_ATHLETES OR INSERT ON DELEGATION 
BEGIN
  SELECT
    SUM("A1"."NUM_") "SUM(NUM_)"
 INTO x_1 FROM
    "DBF19"."DELEGATION" "A1";
END;

'我的表格如下:
| 识别码|编号_|
| - -|- -|
| ABC公司|2个|
| XYZ坐标系|四个|
我只是使用Oracle SQL Developer GUI来创建,但显然做错了什么。

2nbm6dog

2nbm6dog1#

您可以使用视图而不是在表中维护数据。这样,视图每次都可以“实时”获得结果。
而且,您也不需要执行将数据加载到另一个表中的额外任务

CREATE VIEW NUM_ATHLETES
AS
  SELECT SUM("A1"."NUM_") "SUM(NUM_)"
    FROM "DBF19"."DELEGATION" "A1";
62lalag4

62lalag42#

不要创建表,使用VIEW(或者,如果要进行更复杂的计算,则使用MATERIALIZED VIEW):

DROP TABLE num_athletes;

然后:

CREATE VIEW num_athletes (id, num) AS
  SELECT id, SUM(num_)
  FROM   DBF19.DELEGATION
  GROUP BY id;

相关问题