如何在许多表中实现唯一ID

时间:2012-07-28 01:29:04

标签: mysql database unique key

如果你看看facebook的图形API,似乎所有对象共享相同的ID空间,并且所有ID都是唯一的,即使它们位于不同的表中。

MySQL中是否有处理此功能的功能? (如果没有,高层次的想法如何实施?)

3 个答案:

答案 0 :(得分:3)

您可能需要查看UUID()。它返回一个全局唯一的ID,因此您的ID永远不会发生冲突。

要将其转换为整数格式,您可以

UNHEX(REPLACE(UUID(),'-',''))

用于存储在BINARY(16)列中。

(在MySQL参考中转换为整数:Nicholas Sherlock's comment的源代码)

答案 1 :(得分:0)

如果您有一个主数据库服务器,则可以创建一个名为Object的表,该表具有整数自动递增主键和对象类型列。每次创建对象时,首先在此Object表中插入一行,获取id,然后使用该id将行插入到将保存对象信息的任何表中。所以要创建一个事件:

INSERT INTO Object (object_type) VALUES ('Event')

获取最后一个插入ID,让我们说出它的12345.

INSERT INTO Event (id, name, location) VALUES (12345, 'Cookout', 'My back yard')

答案 2 :(得分:0)

或使用单个序列来驱动ID值。