【发布时间】:2017-10-27 19:10:48
【问题描述】:
所以我的 structure.sql 中有这个触发程序:
CREATE FUNCTION dead_filter() RETURNS TRIGGER AS $dead_filter$
BEGIN
IF (NEW.all_votes > 6 AND NEW.non_skip_votes/NEW.all_votes::float < 0.56) THEN
NEW.dead := true;
RETURN NEW;
END IF;
RETURN NEW;
END;
$dead_filter$ LANGUAGE plpgsql;
CREATE TRIGGER dead_filter AFTER UPDATE ON statements
FOR EACH ROW
EXECUTE PROCEDURE dead_filter();
它在本地工作得很好,但由于某种原因它出现在我的登台和生产服务器中!
两者都存在于 Heroku 应用程序上,并且都有
config.active_record.schema_format = :sql
在他们的相关配置文件中。我在这里错过了什么?
select * from pg_trigger;
不包括我在登台/生产中的触发器,但在本地,在开发中。
我需要运行什么来重新读取 structure.sql 文件吗?后端绝对是我的弱点,所以如果有什么超级明显的事情我应该知道去做......很可能我不知道去做!
谢谢!
【问题讨论】:
-
这可能是个愚蠢的问题,但是您是否在实际添加了此触发器的生产数据库上运行了迁移?
-
愚蠢的问题是我所追求的!事实证明我的无知正在闪耀 - 我的印象是我可以将触发器添加到我的 structure.sql (它与 localhost 一起使用),它会自动神奇地用于暂存和生产......不是案子!我添加了一个迁移,现在可以在 staging 的 pg_trigger 中看到它。如果您想让您的评论成为答案,我很乐意接受!
标签: sql postgresql heroku database-trigger