使用mysql检索存储过程中的插入ID

时间:2014-06-06 05:55:09

标签: mysql

我有插入预订记录的存储过程,其中包含booking_idnamer_idt_id等详细信息。现在我想知道如何检索插入ID这个记录。

存储过程仅允许LAST_INSERT_ID 这里MYSQL_INSERT_ID()无效。
但是这里一次有两个用户进行预订,那么最后的记录是不同的。

请通过我的sql中的存储过程帮助我如何获取预订的插入记录ID。

1 个答案:

答案 0 :(得分:3)

您可以通过不同方式捕获last_insert_id()值。

  1. 在过程签名中定义'OUT'参数,并使用正确的数据类型。
  2. 现在,执行INSERT INTO...后,执行set out_param := last_inser_id();
  3. 现在,您可以从调用程序或sql代码体中读取'OUT'参数的值。
  4. 示例1

    delimiter //
    
    create procedure sp_so_q24075108( IN param1 int, ..., OUT param_auto_id int )
    begin
      insert
         into table_name( col2, col3, ... )
       values ( param1, param2, ... );
    
      set param_auto_id := last_insert_id();
    end;
    //
    delimiter ;
    
    
    call sp_so_q24075108( 6, ..., @last_generated_id );
    select @last_generated_id;
    

    OR

    1. 执行'LAST_INSERT_ID()'语句后将'INSERT'捕获到用户变量中。
    2. 现在,您可以从调用程序或sql代码体中读取'OUT'参数的值。
    3. 示例2

      delimiter //
      
      create procedure sp_so_q24075108( IN param1 int, ... )
      begin
        insert
           into table_name( col2, col3, ... )
         values ( param1, param2, ... );
      
        set @auto_id := last_insert_id();
      end;
      //
      delimiter ;
      
      call sp_so_q24075108( 6, ... );
      select @auto_id;
      

      参考

      CREATE PROCEDURE Syntax