【发布时间】:2019-12-03 17:45:39
【问题描述】:
我现在正在为学校编写脚本,但遇到了一个无法修复的奇怪错误。 所以我有一个播放列表、曲目和一个播放列表输入表。 我的任务是创建一个触发器,如果我在播放列表中添加/删除曲目,则应该增加/减少 amountOfTracks 变量。
现在来看看奇怪的错误: 我制作了一个函数“playlistInputAdd”,它在执行“select playlistInputAdd(1,1)”时已经可以使用。 问题是,如果我创建触发器,它会说这个函数不存在。我看到有人问过同样的问题,但他没有添加参数,而我实际上做了。
playlistInputAdd 函数:
CREATE FUNCTION playlistInputAdd(ID int, Amount int)
RETURNS VOID
AS $$
BEGIN
UPDATE playlist
SET amountOfTracks = amountOfTracks + Amount
WHERE playListID = ID;
END;
$$ LANGUAGE plpgsql;
playlistInputAdd_trigger 触发器:
CREATE TRIGGER playlistInputAdd_trigger
AFTER INSERT
ON playlistInput
FOR EACH ROW
EXECUTE PROCEDURE playlistInputAdd(playlistID, 1);
playlistInputDelete_trigger 触发器:
CREATE TRIGGER playlistInputDelete_trigger
AFTER INSERT
ON playlistInput
FOR EACH ROW
EXECUTE PROCEDURE playlistInputAdd(playlistID, 1);
错误信息:
ERROR: function playlistinputadd() does not exist
提前谢谢你!
【问题讨论】:
-
触发函数需要声明为
returns trigger
标签: sql postgresql triggers database-trigger