Mysql 使用选择插入到。。。。如果SELECT返回0行怎么办
我有一个具有以下代码的存储过程:Mysql 使用选择插入到。。。。如果SELECT返回0行怎么办,mysql,sql,Mysql,Sql,我有一个具有以下代码的存储过程: INSERT INTO vt_benutzer_medien_liste (`BenutzerID`, `ReportID`, `MedienDateiTypID`, `Dateiname`, `Dateidatum`, `Dateigroesse`, `Bemerkungen`) SELECT UserID, ReportID, COALESCE(vtmd.ID,16), Filename, FileDate, FileSize, Message FROM
INSERT INTO vt_benutzer_medien_liste (`BenutzerID`, `ReportID`, `MedienDateiTypID`, `Dateiname`, `Dateidatum`, `Dateigroesse`, `Bemerkungen`)
SELECT UserID, ReportID, COALESCE(vtmd.ID,16), Filename, FileDate, FileSize, Message
FROM vt_medien_dateityp AS vtmd
WHERE vtmd.Dateiendung = SUBSTRING_INDEX(Filename,'.',-1)
LIMIT 1
UserID、ReportID、Filename、FileDate、FileSize和Message是参数
插入部分工作正常。将参数“Filename”中提供的文件扩展名与表vtmd中的文件扩展名列表进行比较。
只要vtmd中存在文件扩展名,这也可以正常工作
如果不是,它应该得到一个默认值16->COALESCE(vtmd.ID,16)
但这并没有发生。由于SELECT未找到/返回任何行,因此过程将在没有任何错误的情况下完成,并且未进行任何插入
我能做什么
PS:别名是为了便于阅读
更新
选择返回一个空结果。在这种情况下,我希望返回16作为默认值。如果您的选择没有返回任何行,则没有要插入的内容。使用合并不会强制插入,因为SELECT没有行,即使为所有列指定了合并,如果SELECT没有返回行,也不会插入任何内容
返回的行中的null值与没有行之间存在差异。如果您的选择没有返回行,则没有要插入的内容。使用合并不会强制插入,因为SELECT没有行,即使为所有列指定了合并,如果SELECT没有返回行,也不会插入任何内容 返回的行中的null值与没有行之间存在差异。这是有效的:
BEGIN
SELECT @XDateiTypID := COALESCE((SELECT ID FROM vt_medien_dateityp WHERE Dateiendung = SUBSTRING_INDEX(Filename,'.',-1) LIMIT 1),16);
INSERT INTO vt_benutzer_medien_liste (`BenutzerID`, `ReportID`, `MedienDateiTypID`, `Dateiname`, `Dateidatum`, `Dateigroesse`, `Bemerkungen`)
VALUES (UserID, ReportID, @XDateiTypID, Filename, FileDate, FileSize, Message);
END
BEGIN
SELECT @XDateiTypID := COALESCE((SELECT ID FROM vt_medien_dateityp WHERE Dateiendung = SUBSTRING_INDEX(Filename,'.',-1) LIMIT 1),16);
INSERT INTO vt_benutzer_medien_liste (`BenutzerID`, `ReportID`, `MedienDateiTypID`, `Dateiname`, `Dateidatum`, `Dateigroesse`, `Bemerkungen`)
VALUES (UserID, ReportID, @XDateiTypID, Filename, FileDate, FileSize, Message);
END
PS:因为它是一个存储过程。运行just select语句,您将看到它是否返回数据您是否尝试只运行
select
而不运行INSERT
?我很确定它不会返回任何内容。运行just select语句,您将看到它是否返回数据您是否尝试只运行select
而不运行INSERT
?我敢肯定它不会有任何回报。