【发布时间】:2020-06-12 22:07:06
【问题描述】:
CREATE OR REPLACE FUNCTION removerCapitulo()
RETURNS trigger AS
$BODY$
declare counter int;
BEGIN
select count(*) into counter FROM capitulos where id_capitulo = NEW.id_livro;
if (counter >1)
THEN
DELETE FROM capitulos WHERE id_capitulo = NEW.id_livro;
END IF;
RETURN NEW;
END;
$BODY$
LANGUAGE plpgsql;
CREATE TRIGGER removerCapitulo_trigger
BEFORE DELETE
ON livros
FOR EACH ROW
EXECUTE PROCEDURE removerCapitulo();
DELETE FROM public.livros
WHERE id_livro = 30
当我尝试删除 id = id_capitulo 的“livro”时,我想删除“livro”和“capitulo”,但是当删除“livro”时它返回成功,但它不会删除“livro”或“capitulo” ...我试图放置一个计数器,以防表中有超过 1 个“capitulo”,其 id 等于我要求删除时输入的 id 删除
【问题讨论】:
标签: sql postgresql foreign-keys sql-delete database-trigger