Maj*_*jiy 2 database sql-server database-design
在使用关系数据库的第三方软件(mssql,但此问题不限于此特定数据库)中,我看到了以下构造:
有几个表具有整数主键,它们不会自动递增.相反,当前最高的主键(每个表)存储在另一个表中.该表只包含两列:tableName和currentPrimaryKey.
只要在其中一个表中插入新行,就会使用存储过程来锁定主键表,获取下一个要使用的主键,并再次解锁主键表.
我的问题是:与简单地使用自动增量主键相比,这种结构有什么优势吗?
它将保证顺序分配,没有间隙,这IDENTITY
不能保证,并且在某些法律/监管制度下可能是必需的.
以序列化所有插入物为代价,如果不需要缺口,则需要支付高成本.(IDENTITY
而是在任何事务的"外部"行为,因此如果事务被回滚,则该特定身份值未被使用)