在H2 db中有auto_increment和identity关键字。
最好的方法是什么?
mysql也使用auto_increment,但是cuncurrence read和table lock存在一些问题,是不是真的?
谢谢。
答案 0 :(得分:2)
不,并发读取和表锁定没有问题。
使用每个RDBMS本机的伪代理功能的优点是RDBMS引擎以原子方式处理id值的分配,因此并发客户端不会分配相同的id值。它只需要对内部id计数器进行简短锁定,而不是整个表。
最好的方法是什么是无关紧要的。您应该使用您正在使用的RDBMS提供的功能。不幸的是,在SQL SQL 2003之前,没有在ANSI SQL标准中定义伪引用。到那时,每个供应商都创建了自己的专有功能和语法。
SEQUENCE
个对象,类似于Firebird GENERATOR
or SEQUENCE
个对象。 IDENTITY
作为列选项。AUTO_INCREMENT
列选项,并且还支持伪数据类型SERIAL
,以使其与PostgreSQL具有一定的交叉兼容性。如果H2同时支持IDENTITY
和AUTO_INCREMENT
,则可能会使从MySQL或Microsoft SQL Server迁移的人员更熟悉。我不知道H2,但我猜两种语法形式都可以访问相同的内部功能。
我找到了H2的文档。 IDENTITY
和AUTO_INCREMENT
似乎都使用了SEQUENCE
。