【问题标题】:oracle 11g - what is the way to get the last inserted id of the identity column in oracle 11g database?oracle 11g - 在 oracle 11g 数据库中获取标识列的最后插入 id 的方法是什么?
【发布时间】:2017-03-22 11:04:52
【问题描述】:

在 oracle 11g 数据库中获取最后插入的标识列 id 的最佳方法是什么?

我尝试过使用以下方法:

  • 序列对象
  • 手动定义函数/存储过程以获取最后插入的 ID 值

但这些方法似乎都对我的用例没有用处。

请提出其他相同的方法

【问题讨论】:

  • 它们似乎都是实现您所描述的合适方法。这些方法出了什么问题?
  • 您的案件需要什么具体要求?
  • 请尝试建立minimal reproducible example 以更好地说明您的需求

标签: sql database oracle11g


【解决方案1】:

对你有帮助吗?

SELECT last_number
  FROM user_sequences
 WHERE sequence_name = '<sequence_name>';

你想得到最后一个序列号还是最后插入的?

【讨论】:

    【解决方案2】:

    希望对你有帮助

    SELECT MAX(column_name)
    FROM table_name
    WHERE condition;
    

    【讨论】:

      【解决方案3】:

      Oracle 有一个非常酷的特性,我们可以使用 RETURNING 子句来获取最后插入/更新的数据。希望下面的 sn-p 有所帮助。

      CREATE SEQUENCE avr_seq START WITH 1 INCREMENT BY 1;
      
      SET serveroutput ON;
      DECLARE
        lv_id PLS_INTEGER;
      BEGIN
        INSERT INTO AV_TEST VALUES
          (avr_seq.NEXTVAL
          ) RETURNING TEST INTO lv_id;
        dbms_output.put_line(lv_id);
      END;
      /
      

      【讨论】:

        【解决方案4】:

        如果我已经很好地理解了这个问题,就这样做

        SELECT max(id_column) from your_table;
        

        【讨论】:

          猜你喜欢
          • 2011-06-24
          • 2013-07-28
          • 2013-02-02
          • 1970-01-01
          • 1970-01-01
          • 2013-08-07
          • 2023-03-17
          • 1970-01-01
          • 2011-05-21
          相关资源
          最近更新 更多