gpt4 book ai didi

mysql - 程序失败但可以在没有变量的情况下运行

转载 作者:行者123 更新时间:2023-11-29 07:30:58 25 4
gpt4 key购买 nike

目前我正在使用数据库,并且在程序中遇到了一个奇怪的错误。我创建了一个获取 VARCHAR 类型的三个参数的函数:title、interpret、album。这是代码:

BEGIN
INSERT IGNORE INTO Interpret (Name) VALUES (interpret);
SET @idInterpret := (SELECT id FROM Interpret WHERE Name = interpret);

INSERT IGNORE INTO Album (Name, Interpret) VALUES (album, @idInterpret);
SET @idAlbum := (SELECT id FROM Album WHERE Name = album AND Interpret = @idInterpret);

INSERT INTO Lied (Name, Album, Interpret) VALUES (title, @idAlbum, @idInterpret);
END

如果我启动此过程,我会收到一条错误,指出专辑字段不能为空(这是正确的),但它不应该为空,因为我从上表中读取了值。如果我使用真实数据调用完全相同的 SQL 行(而不是使用变量的过程),那么一切都会很好。您知道为什么会发生这种情况吗?

最佳答案

避免将变量和参数命名为表的列。

在您的查询中:

SET @`idAlbum` := (SELECT `id`
FROM `Album`
WHERE `Name` = `album` AND `Interpret` = @`idInterpret`);

解释,你指的是参数还是表的列?我们知道是column,MySQL解释为是参数。

SQL Fiddle demo

参见:

按照@Bernd-Buffen 的评论,在本例中使用局部变量。

关于mysql - 程序失败但可以在没有变量的情况下运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32667189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com