【问题标题】:Returning last inserted id from MySql从 MySql 返回最后插入的 id
【发布时间】:2011-11-06 00:06:39
【问题描述】:

以下查询有点问题:

START TRANSACTION;

SET @LASTID = 0;

INSERT INTO `Accounts` (`Col1`,`col2`,`col3`,`col4`)
                VALUES (@param1,@param2,@param3,@param4);

SET @LASTID = last_insert_id(); -- This is what I need

INSERT INTO `Users` (`usr1`,`usr2`,`usr3`,`usr4`)
             VALUES (@usr1,@usr2,@usr3,@usr4);

SELECT @LASTID;
COMMIT;

基本上,我需要从帐户表中返回最后插入的 ID,但是在运行 SELECT @LASTID 时,MySql 返回一个 blob 而不是单个值,我在 C# asp.net 中无法访问它

是否有任何简单的方法可以将此值作为 int / varchar 获取?我觉得从代码中的 blob 转换是多余的,我想把这个提升留给 Mysql 服务器。

提前致谢。

【问题讨论】:

    标签: c# asp.net mysql


    【解决方案1】:

    【讨论】:

    • 我不能使用 LAST_INSERT_ID() 因为这会将插入结果返回到用户表中...或者,我可以运行选择来代替 SET @LASTID 吗?
    • 调用一次,只在插入accounts表后才调用
    • 谢谢海姆。我不确定在最终插入查询之前返回一个选择。我认为最终插入用户表会返回一些内容,因此意味着先前的选择将被覆盖。再次感谢您的回答:)
    【解决方案2】:

    将最后一条语句改为:

    SELECT CAST(@LASTID AS integer) as last_id_from_accounts;
    

    【讨论】:

      猜你喜欢
      • 2014-09-06
      • 2012-01-15
      • 2014-06-19
      • 1970-01-01
      • 1970-01-01
      • 2012-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多