您可以在 MySQL 存储过程中使用 IF 语句来控制所采取的操作。语法如下:
IF condition THEN ... do something ... END IF;
IF 语句中的条件可以类似于 CASE 语句中的条件。有关更多信息,请查看 MySQL 的网站。
您还可以在执行插入后检索自动增量 ID。只需使用以下查询:
SELECT LAST_INSERT_ID() into artist_id;
对于这个项目,创建一个名为 AddAlbum 的新过程。它至少需要两个参数 - NameOfArtist 和 AlbumName(就像在上一个项目中一样)。
您的过程需要检查 Artists 表以查看 NameOfArtist 是否存在。如果它不存在,则需要添加一个新行。以下是步骤:
- 使用 Artists 上的 COUNT 聚合来查看 NameOfArtist 存在多少行。将计数存储在名为 artist_count 的变量中。
- 如果 Artist_count 为零,则在 Artists 中插入一个新行。
-- Select the LAST_INSERT_ID() into a variable.
- 如果 Artist_count 为 1,则查找 ArtistID 并将其存储在变量中。
- 在相册表中插入一个新行。
代码:
CREATE PROCEDURE AddAlbum(
NameOfArtist varchar(50),
AlbumName varchar(50)
);
BEGIN
DECLARE artist_count INT;
DECLARE artist_id INT;
SELECT COUNT(ArtistName) INTO artist_count FROM Artists
WHERE ArtistName = NameOfArtist;
IF artist_count = 0
THEN SELECT LAST_INSERT_ID(NameOfArtist) INTO artist_id
AND INSERT INTO Artists (ArtistName)
VALUES (NameOfArtist)
END IF;
IF artist_count = 1
THEN SELECT ArtistID INTO artist_id
FROM Artists
WHERE ArtistName = NameOfArtist
END IF;
INSERT INTO Albums (ArtistID, Title)
VALUES (artist_id, AlbumName);
END;
//
这就是我正在尝试的,对于我目前正在上课的课程。老实说,我不太了解如何编写代码。我完全理解需要做什么,我的大脑出于某种原因只是没有处理如何正确编写代码。我相当肯定我有很多错误,我一直在安静地工作一段时间,但似乎无法理解。一直在重新思考我正在学习的这个数据库管理课程。但是,我不会放弃。有没有人可以帮助我解决这个问题?