使用“艺术家”上的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
最佳答案
该错误应该是不言自明的。 Artists
表的ArtistID
列没有任何默认值,因此尝试仅在其中插入ArtistName
(对于artist_count = 0
情况)会失败。
您可能应该将ArtistID
列配置为AUTO_INCREMENT
,因为您不必担心值是什么,只要它们是唯一的即可。
关于mysql - 错误1364(HY000):使用存储过程时,字段“ArtistID”没有默认值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14509651/