- 使用 Artists 上的 COUNT 聚合来查看 NameOfArtist 存在多少行。将计数存储在名为 artist_count 的变量中。
- 如果 Artist_count 为零,则在 Artists 中插入一个新行。选择 LAST_INSERT_ID() 到一个变量中。
- 如果 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 INSERT INTO Artists (ArtistName)
VALUES(NameOfArtist);
SELECT LAST_INSERT_ID() INTO artist_id;
ELSEIF artist_count = 1
THEN SELECT ArtistID INTO artist_id FROM Artists
WHERE ArtistName = NameOfArtis;
END IF;
INSERT INTO Albums (Title)
VALUES (AlbumName);
END;
//
这是我在调用程序时遇到的错误。我想不通。
ERROR 1364 (HY000): Field 'ArtistID' doesn't have a default value