我试图根据一秒中的值更新一个表中的布尔列。
UPDATE channels
SET contains_photos = TRUE
WHERE id IN (SELECT unnest(ancestors)
FROM channel_tree WHERE id = 11329);
channel_tree.ancestors
列包含一系列渠道ID。以上错误导致以下错误:
错误:无法截断“channel_tree”,因为此会话中的活动查询正在使用它
最重要的目标是为给定频道的所有contains_photos
将ancestors
列设置为true。任何人都知道如何最好地缓解这个错误,甚至是替代解决方案?
答案 0 :(得分:1)
不知道为什么你的错误说TRUNCATE。听起来你有一个触发器或规则正在做一个我们看不到的截断。
以下是执行相同查询的一些替代方法:
UPDATE channels
SET contains_photos = TRUE
WHERE id = ANY (SELECT ancestors
FROM channel_tree WHERE id = 11329);
或者加入:
UPDATE channels
SET contains_photos = TRUE
FROM channel_tree
WHERE channels.id = ANY (channel_tree.ancestors)
AND channel_tree.id = 11329;