模拟自增ID提高数据库移植性

在我的ORM中,一个最大的问题就是怎么去模拟自增主键,因为ORM中的主键是程序控制的。

1.select max(col) from table

这种方法肯定不行,一出现并发就完蛋了。如果在程序里面做循环直到插入成功,那么逻辑就会非常的烦。。


2.添加一张专门保存主键的表,每次先更新再读取。使用事务控制并发

GO

BEGIN TRANSACTION

SELECT @MaxID = MAX_ID FROM CASSABA WHERE CATEGORY = @CATEGORY

UPDATE CASSABA SET MAX_ID = @MaxID + 1 WHERE CATEGORY = @CATEGORY

COMMIT TRANSACTION

相信第二种方法是可行的。

reference:
http://blog.csdn.net/cassaba/archive/2006/11/29/1419798.aspx

posted @ 2007-10-23 16:41    阅读(771)  评论(1编辑  收藏  举报
IT民工