【发布时间】:2021-01-14 10:36:39
【问题描述】:
我正在使用这个数据库...基本上我必须创建一个“promote_cyclist”触发器,以在网格表中记住符合条件的运动员(在环意自行车赛的舞台上排名第一)。
这些表格是:
-
cyclist(cyclist_id:Int,name_cyclist:字符串,team:三个字母的字符串,country:三个字母的字符串)
-
磁带(_name:字符串,km:int,类型:“flat”或“high_mountain”或“medium_mountain”或“chronometro_a_team”或“chronometro_individual”或“time_trial”)
-
arrival_order (cyclist_id:int ; tape_name:string, order: int):其中 cyclist_id (resp, tape_name) 是指向 cyclist (resp, tape) 的外部键;
-
magliarosa(名称:字符串);
这是我在 shell 上加载的触发器 ...
CREATE FUNCTION promote_cyclist()
RETURNS TRIGGER AS
$$
BEGIN
INSERT INTO magliarosa
SELECT c.name_cyclist
FROM cyclist c
WHERE new.cyclist_id = c.cyclist_id AND
new.order = 1;
RETURN NULL;
END ;
$$
LANGUAGE plpgsql;
这是我传递给 shell 的命令:
CREATE TRIGGER promote_cyclist
BEFORE INSERT ON arrival_order
EXECUTE PROCEDURE promote_cyclist ();
在上传了arrival_order txt文件后,至少赢得一个赛段的车手的名字应该记录在magliarosa的名字上。然而,这不会发生。你能帮帮我吗?
【问题讨论】:
-
你在
CREATE TRIGGER语句中错过了子句FOR EACH ROW
标签: sql postgresql triggers plpgsql