如何在oracle 11g中关闭序列生成

时间:2014-11-15 16:54:01

标签: oracle11g

执行DML语句时是否会再次生成序列号?我有两个表说明表1中的ID1,date1,名称1和表2中的ID2,ID1,date2的情况.ID1和ID2都是按顺序生成的。当我更新表2时,ID1被更改,但表1中的序列号保持不变。我已将ID1插入表2,仍然更新正在更改表2中的序列号,但其未反映在表中1.有人可以帮助我更新表2,而不更改生成并插入表2的序列号。

1 个答案:

答案 0 :(得分:1)

序列属性非常简单。

  1. 每次调用nextval函数时都会生成新的序列号。如果在表中插入行,则每行生成一个新数字。例如,您有新序列:

    insert into my_table (num_field) values (my_sequence.nextval);

  2. 1您将获得num_field

    1. 查询

      insert into my_table (num_field1, num_field2) values (my_sequence.nextval, my_sequence.nextval);

    2. 您将在两个字段中获得1

      1. 如果您使用INSERT .. SELECT my_sequence.nextval ...语句,您将获得尽可能多的新值SELECT语句返回。

      2. 如果您在nextval语句中连续多次致电SELECT,则每行只能获得一个新值。

      3. 您只能在顶级SELECT中使用序列。

      4. 要了解插入的值,请使用sequence_name.currval函数或RETURNING语句:

        insert ... select ... from ... returning <field for sequence>

      5. 所有这些都可以在SQL和PL / SQL中使用。

      6. 这就是你需要知道的关于序列的所有内容。

        P上。 S.我没有理解你的问题,但我确信,你现在可以解决所有问题。