我试图返回此语句的行值:
INSERT INTO SystemName (SystemName)
SELECT * FROM (SELECT v_SystemName) AS tmp
WHERE NOT EXISTS (
SELECT * FROM SystemName WHERE SystemName = v_SystemName
) LIMIT 1;
SET id = LAST_INSERT_ID();
如果它确实插入了我需要它返回该行ID,否则它需要返回新的行ID。我试图使用LAST_INSERT_ID(),但是没有返回我需要的东西,因为如果它没有做插入,它会给出错误的结果。有没有人有想法可以使这项工作?
答案 0 :(得分:0)
http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_last-insert-id
假设您的过程只需要返回行ID而不进行进一步处理,您可以尝试:SELECT LAST_INSERT_ID();
答案 1 :(得分:0)
所以,我最终做的就是这个,我知道它不是最好的解决方案,因为它不是一个事务,可能会导致一些问题,但这是我能让它工作的唯一方法。
INSERT INTO SystemName (SystemName)
SELECT * FROM (SELECT v_SystemName) AS tmp
WHERE NOT EXISTS (
SELECT * FROM SystemName WHERE SystemName = v_SystemName
) LIMIT 1;
SELECT id FROM SystemName WHERE SystemName = v_SystemName;
这样我就不需要任何变量或任何东西,它只返回我的id。