我目前对正在参加的在线课程的目标有疑问。目标低于此,我使用的代码以及我收到的错误将低于此。
使用一个变量来编写一个名为“AddNewAlbum”的过程。此过程至少需要两个参数 - NameOfArtist 和 AlbumName。该程序将:
1.从 Artist 表中查找 ArtistID,其中艺术家名称为 NameOfArtist
2. 使用在步骤#1 中找到的 ArtistID 和 AlbumName 参数在专辑中插入新行
现在可以安全地假设艺术家在您运行此过程之前存在(意味着如果您调用 AddNewAlbum ('Bob Dylan', 'Street Legal');那么“Bob Dylan”已经存在于 Artist 表中。
CREATE PROCEDURE AddNewAlbum (
NameOfArtist varcahr(50),
AlbumName varchar(50)
)
BEGIN
SELECT ArtistID, ArtistName FROM Artists
WHERE ArtistName = 'NameOfArtist';
INSERT INTO Albums (Title)
VALUES (AlbumName);
END;
//
CALL AddNewAlbum (
"Bob Dylan",
"Street Legal"
);
//
错误 1364 (HY000): 字段 'ArtistID' 没有默认值
^ 是我收到的错误。谁能看到我做错了什么?我试着引用 WHERE ArtistName = 'NameOfArtist'; 但这没有用。
我想补充一点,它正在提取艺术家姓名和艺术家 ID,但没有将新行添加到专辑中。