我有一个包含与日常业务数据的两个表:每独特价值执行函数一次
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
只执行一次?