我有一個包含與日常業務數據的兩個表:每獨特價值執行函數一次
CREATE TABLE main_table (
main_id serial,
cola text,
colb text,
colc text,
CONSTRAINT main_table_pkey PRIMARY KEY (main_id)
);
CREATE TABLE second_table (
second_id serial,
main_id integer,
cold text,
CONSTRAINT second_table_pkey PRIMARY KEY (second_id),
CONSTRAINT second_table_fkey FOREIGN KEY (main_id)
REFERENCES main_table (main_id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
);
我們有必要知道一些數據在這些表中進行了更新,使出口可以生成並推到第三方。我創建了一個第三個表來保存更新信息:
CREATE TYPE field AS ENUM ('cola', 'colb', 'colc', 'cold');
CREATE TABLE table_updates (
main_id int,
field field
updated_on date NOT NULL DEFAULT NOW(),
CONSTRAINT table_updates_fkey FOREIGN KEY (main_id)
REFERENCES main_table (main_id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
);
main_table
具有觸發更新table_updates
前UPDATE
查詢,滿足需要跟蹤三個四柱更新。
我可以很容易地添加相同類型的觸發器來second_table
,但是因爲main_id
不是唯一的功能可以爲單個main_id
值,這是不希望被執行數次。
如何創建一個函數,在更新second_table
中的多個行時,每main_id
只執行一次?