1
Column | Type | Modifiers
-----------+--------------------------+-------------------------------------------------------
id | integer | not null default nextval('accounts_id_seq'::regclass)
username | character varying(40) |
email | character varying(40) |
password | character varying |
join_date | timestamp with time zone | default now()
xp | integer | default 0
level | integer | default 1
provider | character varying |
is_admin | boolean | default false
我試圖創建一個觸發器,它着眼於用戶的XP INTEGER,並更新自己的水平基礎上,給出XP下面的用戶表
這是我的下面的功能和必要的觸發器
CREATE OR REPLACE FUNCTION set_user_level() RETURNS TRIGGER AS $level$
BEGIN
CASE
WHEN NEW.xp BETWEEN 100 AND 200 THEN
NEW.level = 2;
WHEN NEW.xp BETWEEN 200 AND 400 THEN
NEW.level = 3;
ELSE
NEW.level = 1;
END CASE;
RETURN NEW;
END;
$level$ LANGUAGE plpgsql;
CREATE TRIGGER set_user_level AFTER UPDATE ON account FOR EACH ROW EXECUTE PROCEDURE set_user_level();
但是,每當我更新用戶xp。用戶級別仍然停留在1.我的語法有問題嗎?我幾乎使用了文檔中指定的相同語法。
謝謝你的回答..我想到了BEFORE和AFTER的全新含義。生病嘗試這一點..也,你有什麼機會能夠澄清什麼確切$水平$語法意味着什麼時候創建函數?這是我無法弄清楚,但在文檔中指定的東西 – Kannaj
請參閱https://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-DOLLAR-QUOTING 。 –