首页 > 解决方案 > 以编程方式控制 MySQL 中的主键范围

问题描述

我正在使用一个有 15 年历史的系统,其中“用户”表中的主键是用户 ID,由客户端持有并用于对我们的 PHP 脚本的请求。我知道这是一个坏主意,但事实就是如此。我期待用完 32 位范围内的主键值,因为客户端使用 32 位整数来存储此 UserID 值。

我的计划是重新发布一个可以处理 64 位 UserID 的新客户端,但是,我将始终使用 32 位客户端。

因此,我希望能够更新分配用户行的 PHP 脚本,以首先确定客户端是 32 位还是 64 位,然后根据答案从同一个表中的不同范围进行分配。

32 位客户端将需要分配未使用且介于 1 和 2^31 之间的 UserID 值。64 位客户端需要特别避免分配 1..2^31 范围内的 UserID 值,以免分配稀缺资源。

编写这两个 INSERT 查询以控制分配主键的范围的最佳方法是什么,同时仍确保每个查询都是唯一的?

我的强烈偏好是不要有两个单独的“用户”表,因为这会影响很多其他 PHP 代码。

谢谢您的帮助。

标签: mysql

解决方案


推荐阅读