我的主键生成策略是取主键字段的最大值加1,然后插入记录,多用户并发插入记录,会出现问题吗?
Sqlserver和DB2有Identity类型。
Oracle有Sequence可以用,当然这个SQL写法就以上的有点不一样了。
Mysql有Auto_increment。
要么在类的层面上,用静态同步方法或对静态成态进行同步,使得多线程成为单线程(就是一个一个给我Save。:D)。这也是一种解决方法,因为创建自增数据一般不是业务的大部分需要。
all RDBMS have its way, DB2 support both identity col and sequence. But if you want your app be DB independent, build your own auto number framework or buy one will benefit you in long run.
Gen seed on middle tier is also dangerous unless you have cluste wide sync mechanism.
> Sqlserver和DB2有Identity类型。
> Oracle有Sequence可以用,当然这个SQL写法就以上的有点不?> 样了。
> Mysql有Auto_increment。
用系统自带的自增数据类型有个问题,就是如何获得自增后的值,不同的数据库实现有不同的方法。我用的办法是自己建一个表,记录最大值,用存储过程实现自增,注意在存储过程中实现自增时考虑锁记录,防止多线程同时增同一个数。