【问题标题】:How to get the last insert ID from a table如何从表中获取最后一个插入 ID
【发布时间】:2011-03-06 11:52:51
【问题描述】:

我想获取表中最后一个 ID 插入的值。我该怎么做?

【问题讨论】:

    标签: sql db2


    【解决方案1】:

    我使用的解决方案是:

    select id from NEW TABLE (insert into (val1, val2, ...) values ('lorem', 'ipsum', ...))
    

    这会从插入数据库的最后一行获取 id 列:)

    【讨论】:

    • 有关此方法的更多信息,请参阅SELECT from INSERT statement 上的文档
    • 悲剧。那个“SELECT from INSERT”文档要么改变了位置,要么变得不可用。
    • 检查 DB2 SQL 编程指南中的选择插入的值部分。我的指南中的一个例子是SELECT EMPNO, HIRETYPE, HIREDATE FROM FINAL TABLE ( INSERT INTO EMPSAMP (NAME, SALARY, DEPTNO, LEVEL) VALUES('Mary Smith', 35000.00, 11, 'Associate'))
    【解决方案2】:
    int keyId = -1;
    preparedStatement.executeUpdate();
    resultSet = preparedStatement.getGeneratedKeys();
    if (resultSet.next()) {
        keyId = rs.getInt(1);
    }
    

    https://docs.oracle.com/javase/7/docs/api/java/sql/Statement.html#getGeneratedKeys()

    更新:不要忘记使用以下标志创建preparedStatement Statement.RETURN_GENERATED_KEYS 否则它将不起作用)))

    【讨论】:

    • 嗯……甲骨文!= DB2
    • 这是java而不是Oracle的教程
    • 那么您根本没有解决 OP 的问题。
    【解决方案3】:

    看看这个答案。

    http://www.sitepoint.com/php-database-db2/

    // get the last inserted ID into the specified table  
    // int lastInsertID(string $tblName)  
    function lastInsertID($tblName)  
    {  
     if ($this->transIsOpen())  
     {  
       $sql = "SELECT SYSIBM.IDENTITY_VAL_LOCAL() AS id FROM " . $tblName;  
       $rs = $this->query($sql);  
       return $this->fetch($rs, "id");  
     }  
     return -1;  
    }
    

    或者这个

    http://www.php.net/manual/en/function.db2-last-insert-id.php#98361

    【讨论】:

      【解决方案4】:
      SELECT IDENTITY_VAL_LOCAL() AS VAL FROM SYSIBM.SYSDUMMY1
      

      docs

      【讨论】:

      • 这个对我有用,但我需要使用 OpenQuery 来让它工作,因为我们将 DB2 设置为链接服务器。希望对其他人有所帮助
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-07
      • 2023-03-16
      • 2011-04-30
      • 1970-01-01
      • 1970-01-01
      • 2012-02-12
      相关资源
      最近更新 更多