我需要實作一個函式和一個觸發器來將 COLUMN A 的內容復制到同一個表中的 COLUMN B(最后一個完全為 NULL)。每當輸入新記錄時,觸發器必須執行此函式。我嘗試在函式中執行以下操作,但似乎不起作用
UPDATE table
SET column1 = column2;
RETURN column1;
另一方面,在觸發器中,我有:
CREATE TRIGGER name
AFTER UPDATE OR INSERT ON table
FOR EACH ROW EXECUTE PROCEDURE function();
有沒有人看到錯誤?
uj5u.com熱心網友回復:
你需要一個before update or insert觸發器。
create or replace function the_trigger_f() returns trigger language plpgsql as
$$
begin
new.column_b := new.column_a;
return new;
end;
$$;
CREATE TRIGGER trigger_name
BEFORE UPDATE OR INSERT ON the_table
FOR EACH ROW EXECUTE PROCEDURE the_trigger_f();
uj5u.com熱心網友回復:
也許你需要生成的列?檔案
create table test_table (column1 text, column2 text
GENERATED ALWAYS AS (column1) stored);
和結果
insert into test_table(column1) values('Megatest'),('Ubertest');
column1 | column2
---------- ----------
Megatest | Megatest
Ubertest | Ubertest
更新
update test_table set column1='11111111111111' where column1='Megatest';
select * from test_table;
column1 | column2
---------------- ----------------
Ubertest | Ubertest
11111111111111 | 11111111111111
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/366093.html
標籤:sql PostgreSQL的
上一篇:檔案移動失敗后消失
