sql—删除表是否会删除其触发器和函数?

utugiqy6  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(428)

我已经创建了一个表 score 同时还创建了一个函数和一个触发器。

CREATE TABLE scores( 
--fields
);

CREATE FUNCTION scores_before_save() RETURNS trigger AS $$
BEGIN
   -- function logic
END;
$$ LANGUAGE plpgsql;

CREATE TRIGGER scores_before_save BEFORE INSERT OR UPDATE ON scores
    FOR EACH ROW EXECUTE PROCEDURE scores_before_save();

我把table掉了

DROP TABLE scores;

所以我的问题是,一旦我们删除了表,触发器和函数会自动删除吗?还是我们需要手动删除它们?

j8yoct9x

j8yoct9x1#

你可以很容易地检查它们

-- check function existence
SELECT proname  FROM pg_proc WHERE proname    = 'scores_before_save';

-- check trigger existence
SELECT trigger_name from information_schema.triggers 
where trigger_name = 'scores_before_save';

如您所见,在drop table之后,函数保持在这里,但触发器被删除。

相关问题