首页 文章

创建具有自动增量功能的oracle表

提问于
浏览
-2

如何使用自动增量列创建一个oracle表,这样每当插入exsisiting值时,它应该递增计数器,否则它应该插入一个新计数

例如,如果我有一个包含电话号码和状态的列,则应该有另一个名为counter的列,其中将显示自动增量功能

每当再次插入exoniting phonenumber时,计数器必须递增,如果插入新值,则counter应为该数字添加新的初始值

3 回答

  • 1

    取决于您要如何插入数据 . 如果要同时插入多行,请尝试 MERGE 语句 . 加入电话号码,如果发现增加计数器列值,则将计数器设置为1 .

    如果要一次插入一行,则最好在执行插入的代码中完成 .

    EDIT: 我没想到这一点 . 既然我是,我认为没有必要使用计数器列 . 如果您打算多次插入电话号码,为什么不必存储't you simply count each phone number? It doesn' .

  • 0

    你不能创建这样的表 .

    但是,您可以将自己的逻辑添加到INSERT新行的位置 - 例如,它不在表本身中 . 你也可以去 TRIGGER 的路线 .

    此外,您可能希望简单地将您的ID作为生成的唯一GUID,并在必要时创建此重复计数器,在oracle website中使用 ROW_NUMBER() OVER ,例如 EMP_ID

    SELECT department_id, last_name, employee_id, ROW_NUMBER()
       OVER (PARTITION BY department_id ORDER BY employee_id) AS emp_id
       FROM employees;
    
    DEPARTMENT_ID LAST_NAME                 EMPLOYEE_ID     EMP_ID
    ------------- ------------------------- ----------- ----------
               10 Whalen                            200          1
               20 Hartstein                         201          1
               20 Fay                               202          2
               30 Raphaely                          114          1
               30 Khoo                              115          2
               30 Baida                             116          3
               30 Tobias                            117          4
               30 Himuro                            118          5
               30 Colmenares                        119          6
    
  • -1

    对于自动增量您可以创建如下序列 .

    CREATE SEQUENCE name_of_sequence
      START WITH 1
      INCREMENT BY 1;
    

    对于查询的第二部分,您可以定义一个触发器,该触发器使用上面的序列自动填充主键值

相关问题