触发程序未在暂存/生产中显示

时间:2017-10-27 19:10:49

标签: sql postgresql heroku database-trigger

所以我在我的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;

不包括我在暂存/生产中的触发器,但在开发时本地就是DOES。

我需要运行什么来重新读取structure.sql文件吗?后端绝对是我的弱点,所以如果有一些超级显而易见的东西我应该知道的事情......我不知道该怎么做!

谢谢!

1 个答案:

答案 0 :(得分:1)

在评论中,您需要创建一个迁移,添加触发器并在生产中运行此迁移,因为它在Heroku上不是自动的。另请注意,在本地运行迁移或structure.sql之类的任务后,将重新生成rake db:schema:dump文件。所以你不应该手动编辑这个文件。