2

我正在尝试根据一秒钟内的值更新一个表中的布尔列。

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列设置为 true 。ancestors任何人都知道如何最好地缓解此错误,甚至是替代解决方案?

4

1 回答 1

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;
于 2012-06-14T05:17:40.310 回答