-- 创建成就系统表
CREATE TABLE achievements (
id SERIAL PRIMARY KEY,
title VARCHAR(100),
reward_gold INT,
is_unlocked BOOLEAN DEFAULT false
);
-- 编写解锁函数
CREATE FUNCTION unlock_achievement(
achievement_id INT,
player_id INT
) RETURNS VOID AS $$
BEGIN
UPDATE achievements
SET is_unlocked = true
WHERE id = achievement_id;
UPDATE players
SET gold = gold + (SELECT reward_gold FROM achievements WHERE id = achievement_id)
WHERE id = player_id;
END;
$$ LANGUAGE plpgsql;
-- 测试运行
INSERT INTO achievements (title, reward_gold)
VALUES ('First Blood', 100);
SELECT unlock_achievement(1, 1); -- 解锁成就1给玩家1