执行DML语句时是否会再次生成序列号?我有两个表说明表1中的ID1,date1,名称1和表2中的ID2,ID1,date2的情况.ID1和ID2都是按顺序生成的。当我更新表2时,ID1被更改,但表1中的序列号保持不变。我已将ID1插入表2,仍然更新正在更改表2中的序列号,但其未反映在表中1.有人可以帮助我更新表2,而不更改生成并插入表2的序列号。
答案 0 :(得分:1)
序列属性非常简单。
每次调用nextval
函数时都会生成新的序列号。如果在表中插入行,则每行生成一个新数字。例如,您有新序列:
insert into my_table (num_field) values (my_sequence.nextval);
1
您将获得num_field
。
查询
insert into my_table (num_field1, num_field2)
values (my_sequence.nextval, my_sequence.nextval);
您将在两个字段中获得1
。
如果您使用INSERT .. SELECT my_sequence.nextval ...
语句,您将获得尽可能多的新值SELECT
语句返回。
如果您在nextval
语句中连续多次致电SELECT
,则每行只能获得一个新值。
您只能在顶级SELECT
中使用序列。
要了解插入的值,请使用sequence_name.currval
函数或RETURNING
语句:
insert ...
select ...
from ...
returning <field for sequence>
所有这些都可以在SQL和PL / SQL中使用。
这就是你需要知道的关于序列的所有内容。
P上。 S.我没有理解你的问题,但我确信,你现在可以解决所有问题。