gpt4 book ai didi

sql - 删除前触发 Firebird

转载 作者:行者123 更新时间:2023-12-04 18:43:04 24 4
gpt4 key购买 nike

我有两张 table AUTHORBOOKAUTHORID 连接.

我需要创建一个触发器,在删除作者的情况下,它首先删除该作者的书籍,然后删除该作者。如果有人只是尝试更新 AUTHORID字段在 AUTHOR它更新 AUTHORIDBOOK自动地。这甚至可行吗? :)

set term # ;  
create trigger del for author
before delete or update as
declare variable aut int;
declare variable bok int;
begin
if(deleting) then
begin
delete from book where authorid=:aut;
delete from author where authorid=:aut;
end
if (updating) then
begin
update book set authorid=new.authorid;
end end#
set term ; #

最佳答案

您不需要触发器来执行此操作。对于删除,您可以使用外键 ON DELETE CASCADE .如果外键目标被删除,这将自动将删除级联到相关行。

一般来说,我建议不要让人们更改标识符,但如果你真的需要或想要,你可以使用 ON UPDATE CASCADE .如果外键目标发生变化,这将自动更新外键。

例如(从 Interbase 6 语言引用复制/修改):

CREATE TABLE T1 (P1 INTEGER NOT NULL PRIMARY KEY);
CREATE TABLE T2 (F2 INTEGER REFERENCES T1(P1)
ON UPDATE CASCADE
ON DELETE CASCADE);

关于sql - 删除前触发 Firebird,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20641368/

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