gpt4 book ai didi

PostgreSQL 继承 : are parent-table triggers inherited?

转载 作者:行者123 更新时间:2023-11-29 11:24:13 24 4
gpt4 key购买 nike

如果我在 CANINES 表上有一个将时间戳列设置为 now() 的更新前触发器,并且 DOGS 从 CANINES 继承,当更新 DOGS 行时,是否应该触发 CANINES 更新触发器?在我的测试中它没有,所以我怀疑答案是,但也许我做的事情不正确:

create table canines
(
lastupdate timestamp with time zone default now()
);

CREATE OR REPLACE FUNCTION stamp_lastupdate_column()
RETURNS TRIGGER AS $$
BEGIN
NEW.lastupdate = now();
RETURN NEW;
END;
$$ language 'plpgsql';


CREATE TRIGGER TRG_CANINES_BU BEFORE UPDATE
on CANINES FOR EACH ROW EXECUTE PROCEDURE
stamp_lastupdate_column();


create table dogs
(id int primary key,
breed varchar(25)
) inherits (CANINES);

insert into dogs(id, breed) values(1, 'sheltie');

select * from dogs;
--"2013-02-09 06:49:31.669-05" , 1 , sheltie

update dogs set breed = 'Sheltie/Shetland Sheepdog' where id = 1;

select * from dogs;
--"2013-02-09 06:49:31.669-05" , 1 , Sheltie/Shetland Sheepdog

最佳答案

长话短说 - 不,它不是遗传的。有 CREATE TABLE 选项 - LIKE ... INCLUDING ...,但它也不会传播触发器。

关于PostgreSQL 继承 : are parent-table triggers inherited?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14787887/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com