gpt4 book ai didi

mysql - 我将如何创建这个触发器?

转载 作者:行者123 更新时间:2023-11-29 20:57:33 25 4
gpt4 key购买 nike

我有两个看起来像这样的表(当然它们有更多的行)。

AuthorID | Name          | Number of albums
-------------------------------------------
1 | Santana | 39
2 | Johnny Cash | 95

AuthorID | AlbumID
----------------------
1 | 14
2 | 17

我想要做的是有一个触发器,当删除或插入第二个表中的行时,该触发器会更新。我要在第一个表中更新的行是第三行。它基本上代表 count(AlbumID) 这也是我计算它的方式。我真的不知道该怎么做,因为到目前为止我只创建了非常简单的触发器

最佳答案

根本不清楚为什么您需要首先存储 number_of_albums 列。但我不会回答这个问题。我来回答你提出的问题。

第二个表上的插入后触发器可以对第一个表执行更新,以增加给定author_id 的number_of_albums 列。我们假设第一个表的名称是 author,第二个表的名称是 album

 DELIMITER $$

CREATE TRIGGER album_ai
AFTER INSERT ON album
FOR EACH ROW
BEGIN
UPDATE author
SET number_of_albums = number_of_albums + 1
WHERE author_id = NEW.author_id;
END$$

DELIMITER ;

您可以使用删除后触发器执行类似的操作,递减 number_of_albums 列,引用 OLD.author_id 来获取 author_id 的值> 被删除的行的列。

对于更新,如果 author_id 列的值发生更改,您将需要更新两行...在一行上增加 number_of_albums,并在另一行上减少 number_of_albums。

 DELIMITER $$

CREATE TRIGGER album_ai
AFTER UPDATE ON album
FOR EACH ROW
BEGIN
IF NOT ( NEW.author_id <=> OLD.author_id ) THEN
UPDATE author
SET number_of_albums = number_of_albums - 1
WHERE author_id = OLD.author_id;
UPDATE author
SET number_of_albums = number_of_albums + 1
WHERE author_id = NEW.author_id;
END IF;
END$$

DELIMITER ;

关于mysql - 我将如何创建这个触发器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37510739/

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