我有一個表稱爲「subject_101」,並暫且它有三列,「ID」其中有反對的序列,「DATE_CREATED」已經「現在SET DEFAULT( )'應用於它,最後一列叫做'參考'。我已成功創建一個更新聲明,它將加入'ID'和'date_created'字段使用;與PostgreSQL的
UPDATE test.subject_101 set reference = id || '/' || (EXTRACT(YEAR FROM date_created));
並且這產生期望的結果。例如4/2014
我想變得更聰明一點,並將其作爲函數/觸發器創建,但我遇到了下面的代碼問題。看來會發生的是,當我插入新記錄時,我的'參考'列保持爲NULL。
CREATE OR REPLACE FUNCTION reference_number()
RETURNS TRIGGER AS $$
BEGIN
IF (TG_OP = 'INSERT') THEN
NEW.reference = id || '/' || (EXTRACT(YEAR FROM date_created));
END IF;
RETURN NEW;
END;
$$ language 'plpgsql'
CREATE TRIGGER create_reference_number BEFORE UPDATE ON test.subject_101
FOR EACH ROW EXECUTE PROCEDURE reference_number();
任何指針都會很棒。
我認爲在觸發之前,「ID」列將不會被填充,因此連接會產生NULL。嘗試更新觸發器 –
個人而言,我會避免完全創建這樣的列,而是根據需要生成它。 –