- Artists の COUNT 集計を使用して、NameOfArtist に存在する行数を確認します。カウントを artist_count という変数に格納します。
- artist_count がゼロの場合、Artists に新しい行を挿入します。LAST_INSERT_ID() を変数に選択します。
- artist_count が 1 の場合、ArtistID を検索して変数に格納します。
- Albums テーブルに新しい行を挿入します。
.
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