【发布时间】:2017-09-05 08:39:25
【问题描述】:
在使用关系数据库的第三方软件(mssql,但这个问题不限于这个特定的数据库)我看到了以下构造:
多个表具有整数主键,它们不是自动递增的。相反,当前最高的主键(每个表)存储在另一个表中。该表仅包含两列:tableName 和 currentPrimaryKey。
每当在其中一个表中插入新行时,都会使用存储过程来锁定主键表,获取下一个要使用的主键,并解锁主键-再次表。
我的问题是:与简单地使用自增主键相比,这种结构有什么优势吗?
【问题讨论】:
-
我会说这是旧设计。我以前在软件中看到过,然后在以后的版本中它转移到了身份。
-
存储在另一个表中的不是主键本身,而是每个表的主键的最后一个或下一个值。主键是一组唯一标识表中行的列。
-
这是用户实现的自动增量功能替代品。我
-
您可以获得一些奇怪的功能,因为您可以在需要时手动覆盖自动排序。我并不是说这是个好主意。
-
另外,如果你在一些缺乏自动增量的环境中,你可以实现这个。这些环境多年前就存在了。
标签: sql-server database database-design