2014-10-30 97 views

回答

0

假设码/描述表:

insert into TABLE (X_ID, X_DESC) 
(select max(b.X_ID) + 1, 'TEST DESC' from TABLE b); 

但是,什么是错的顺序?这就是它的目的。

+0

但这个查询将需要表中的虚拟最大值,我们需要开始... 但我想从第一个记录开始(表中没有虚拟记录)... – 2014-10-30 13:47:19

+1

@Shobhit Varshney nvl (max(b.X_ID),0)+ 1但是平行插入呢? – Multisync 2014-10-30 14:06:03

+0

问题在于寻求麻烦,而这个SQL将提供它。用户1插入一行,然后用户2插入一行,然后用户1提交,然后用户2提交。现在您有一个重复的ID,或者由于唯一的密钥违规而失败的事务。序列正好存在以避免这种情况。 – Bacs 2014-10-30 14:45:45