mysql - 从存储过程 MySQL 返回行 ID

标签 mysql stored-procedures

我正在尝试返回此语句的行值:

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() 但它没有返回我需要的东西,因为如果它不执行插入,它会给出错误的结果。有没有人有可以使这项工作可行的想法?

最佳答案

http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_last-insert-id

假设您的过程只需要返回行 ID 并且不会进行进一步处理,您可以尝试:SELECT LAST_INSERT_ID();

关于mysql - 从存储过程 MySQL 返回行 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18107595/

相关文章:

python - 通过SSH隧道访问远程数据库

mysql - 使用子字符串后mysql查询中出现多个警告

c# - 如何将存储过程的多个结果存储到数据集中?

c# - 在 .NET 7 和 WinForms 应用程序中使用 SqlDependency

sql - 从存储过程中的动态 SQL 获取结果

sql-server - 如何在Sql Server 的While 循环中设置变量

c# - 当我尝试通过存储过程插入空值时出现 SqlException

mysql - 从另一个数据库的表中插入行

mysql - phpmyadmin 自动更新,sql mod

mysql - 为什么 mysql 查询多个计数语句返回单个值?