【发布时间】:2012-07-28 01:29:03
【问题描述】:
如果您查看 facebook 的图形 API,似乎所有对象共享相同的 ID 空间,并且所有 Id 都是唯一的,即使它们位于不同的表中。
MySQL 中是否有处理此问题的功能? (如果没有,如何实现的高级想法?)
【问题讨论】:
如果您查看 facebook 的图形 API,似乎所有对象共享相同的 ID 空间,并且所有 Id 都是唯一的,即使它们位于不同的表中。
MySQL 中是否有处理此问题的功能? (如果没有,如何实现的高级想法?)
【问题讨论】:
您可能想查看UUID()。它返回一个全局唯一 ID,因此您的 ID 永远不会发生冲突。
要将其转换为整数格式,您可以
UNHEX(REPLACE(UUID(),'-',''))
用于存储在BINARY(16) 列中。
(转换为整数的来源:Nicholas Sherlock's comment 在 MySQL 参考)
【讨论】:
如果您有一个主数据库服务器,您可以创建一个名为 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')
【讨论】:
或者使用单个序列来驱动 ID 值。
【讨论】: