Dyl*_*ann 1 mysql stored-procedures
您可以在 MySQL 存储过程中使用 IF 语句来控制所采取的操作。语法如下:
IF condition THEN ... do something ... END IF;
Run Code Online (Sandbox Code Playgroud)
IF 语句中的条件可以类似于 CASE 语句中的条件。有关其他信息,请查看 MySQL 的网站。
您还可以在执行插入后检索自动增量 ID。只需使用以下查询:
SELECT LAST_INSERT_ID() into artist_id;
Run Code Online (Sandbox Code Playgroud)
对于这个项目,创建一个名为 AddAlbum 的新过程。它至少需要两个参数 - NameOfArtist 和 AlbumName(就像在上一个项目中一样)。
您的过程需要检查 Artists 表以查看 NameOfArtist 是否存在。如果它不存在,您需要添加一个新行。以下是步骤:
—— Select the LAST_INSERT_ID() into a variable.
代码:
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;
//
Run Code Online (Sandbox Code Playgroud)
这就是我正在尝试的,对于我目前正在上课的课程。老实说,我不太了解如何编写代码。我完全明白需要做什么,我的大脑出于某种原因只是没有处理如何正确编写代码。我相当确定我有很多错误,我一直在安静地工作一段时间,但似乎无法理解。一直在重新思考我正在学习的这个数据库管理课程。但是,我不会放弃。有没有人可以帮助我解决这个问题?
如果您需要遵循确切的步骤,这将是您的代码:
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
INSERT INTO Artists (ArtistName) VALUES (NameOfArtist);
SELECT LAST_INSERT_ID(NameOfArtist) INTO artist_id;
ELSE 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; //
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15979 次 |
| 最近记录: |