0
我想在game_catalog
表上創建觸發器讓每一位用戶添加或刪除從他的收藏遊戲的總遊戲數被更新的時間。由於遊戲集合存儲爲文本數組,我決定使用array_length函數來計算遊戲數量。PostgreSQL觸發對INSERT,UPDATE,遊戲數/數組元素的刪除
game_catalog
id - BIGSERIAL primary key
user_id - INTEGER
game_list - text []
game_count - INTEGER
我試圖使其重新計算game_list
柱插入後的長度創建觸發器或刪除,但它不工作。以下是我對現在:
CREATE OR REPLACE FUNCTION count_games()
RETURNS TRIGGER AS $$
BEGIN
UPDATE game_catalog
SET game_count = (SELECT array_length(game_list, 1) from game_catalog)
WHERE user_id = NEW.user_id;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER count_games
AFTER INSERT OR DELETE ON game_catalog FOR EACH ROW
EXECUTE PROCEDURE count_games();
很奇怪。如果遊戲列表在數組中,則不會發生插入或刪除操作 - 僅更新 - 爲用戶更新行,更改'game_list'字段... –