不知道db2的sequence是什么机制,应该和连接没有关系吧?是不是类似于程序中的全局变量,只会存在一个值,不会说多个用户同时insert的时候,产生主键冲突吧?
6 个解决方案
#1
不会有冲突的,
#2
怎么木有人回答呢~~~~~~~~~~~~~~~~~~
#3
提示回复了2条。俺咋一个也看不到呢!崩溃崩溃
#4
不会有冲突,sequence 就是用来解决主键冲突问题的。任何进程只要执行"nextval for sequencename"成功,sequence 就会增1.
#5
给你举个主键冲突的例子:
表T1中有主键ID,会有三个进程P1,P2,P3往T1中插入数据.三个进程生成主键的过程是取道T1中的最大值,然后增1,然后插入。如果某一时间P1,P2,P3都取道同样的ID然后加一,再插入,这时他们将要插入的三条记录都有相同的主键,所以就会插不进去,主键冲突发生。有了Sequence后这三个进程都是用nextval for s_T1(T1的sequence的名字)
而sequence的特性是每执行nextval for sequencename都会加一,所以不会有主键冲突。
表T1中有主键ID,会有三个进程P1,P2,P3往T1中插入数据.三个进程生成主键的过程是取道T1中的最大值,然后增1,然后插入。如果某一时间P1,P2,P3都取道同样的ID然后加一,再插入,这时他们将要插入的三条记录都有相同的主键,所以就会插不进去,主键冲突发生。有了Sequence后这三个进程都是用nextval for s_T1(T1的sequence的名字)
而sequence的特性是每执行nextval for sequencename都会加一,所以不会有主键冲突。
#6
楼上说的对,用sequencename,在db2中是不会有问题的。
另外,你说的和session有关的sequencename,是什么数据库,我很好奇,想知道一下。
另外,你说的和session有关的sequencename,是什么数据库,我很好奇,想知道一下。
#1
不会有冲突的,
#2
怎么木有人回答呢~~~~~~~~~~~~~~~~~~
#3
提示回复了2条。俺咋一个也看不到呢!崩溃崩溃
#4
不会有冲突,sequence 就是用来解决主键冲突问题的。任何进程只要执行"nextval for sequencename"成功,sequence 就会增1.
#5
给你举个主键冲突的例子:
表T1中有主键ID,会有三个进程P1,P2,P3往T1中插入数据.三个进程生成主键的过程是取道T1中的最大值,然后增1,然后插入。如果某一时间P1,P2,P3都取道同样的ID然后加一,再插入,这时他们将要插入的三条记录都有相同的主键,所以就会插不进去,主键冲突发生。有了Sequence后这三个进程都是用nextval for s_T1(T1的sequence的名字)
而sequence的特性是每执行nextval for sequencename都会加一,所以不会有主键冲突。
表T1中有主键ID,会有三个进程P1,P2,P3往T1中插入数据.三个进程生成主键的过程是取道T1中的最大值,然后增1,然后插入。如果某一时间P1,P2,P3都取道同样的ID然后加一,再插入,这时他们将要插入的三条记录都有相同的主键,所以就会插不进去,主键冲突发生。有了Sequence后这三个进程都是用nextval for s_T1(T1的sequence的名字)
而sequence的特性是每执行nextval for sequencename都会加一,所以不会有主键冲突。
#6
楼上说的对,用sequencename,在db2中是不会有问题的。
另外,你说的和session有关的sequencename,是什么数据库,我很好奇,想知道一下。
另外,你说的和session有关的sequencename,是什么数据库,我很好奇,想知道一下。