0

我创建了一个表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();

现在,我放下了这张桌子

DROP TABLE scores;

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

4

1 回答 1

2

您可以轻松地检查它们

-- 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';

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

于 2020-06-19T09:43:03.420 回答