gpt4 book ai didi

python - SQLAlchemy:触发器不在 INSERT 上触发

转载 作者:行者123 更新时间:2023-11-29 13:51:59 27 4
gpt4 key购买 nike

我有一个触发器的问题,它不会通过 SQLAlchemy 中的 .merge() 调用触发。
我有以下触发器:

CREATE TRIGGER trigger_update_comment_count
BEFORE INSERT ON mediacomment
FOR EACH ROW
EXECUTE PROCEDURE update_comment_count();

触发器执行以下过程:

CREATE OR REPLACE FUNCTION update_comment_count() RETURNS trigger AS $BODY$
BEGIN
UPDATE channel_users
SET comment_count = comment_count + 1,
last_comment = NEW.created_time
WHERE
channel_id = (SELECT ch.channel_id FROM media m
INNER JOIN channel ch ON ch.user_id = m.user_id
WHERE m.media_id = NEW.media_id)
AND user_id = NEW.user_id;

RETURN NEW;
END;
$BODY$ LANGUAGE plpgsql;

如果我像这样执行基于 SQL 的 INSERT,触发器会很好用:

INSERT INTO medialike VALUES (999292999,'2016-01-01 00:00:00.000000',367668179,true,'770160534981089486_12336189'); 

但是,当我使用 SQLAlchemy 的 .merge() 方法时,插入了一行但没有触发触发器:

com = MediaComment(
is_follower=is_follower,
comment_text=comment['txt'],
comment_id_native=str(comment['id']),
created_time=comment['time'],
user_id=str(comment['id']),
media_id=self.media_id
)
self.session.merge(com)
self.session.commit()

有什么可能导致此问题的想法吗?
我正在运行 PostgreSQL-9.4 和 Python3

最佳答案

我通过启用日志记录并检查 pg_log 中的日志文件来解决这个问题。原因是本应触发触发器的 INSERT 事务正在回滚。

关于python - SQLAlchemy:触发器不在 INSERT 上触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39335704/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com