sql - 多个表中的唯一 ID [MySQL]

标签 sql mysql

我想在两个MySQL表中自动递增id(如果第一个表中有id=4,那么第二个表中不能有id=4)。我的问题是我怎样才能以最好的方式做到这一点?

最佳答案

您需要的是外部生成的序列并将其链接到您的 2 个表

你应该看看 flickr 做了什么,看看这个链接:http://code.flickr.com/blog/2010/02/08/ticket-servers-distributed-unique-primary-keys-on-the-cheap/

您创建生成 id 的表:

CREATE TABLE `Tickets64` (
  `id` bigint(20) unsigned NOT NULL auto_increment,
  `stub` char(1) NOT NULL default '',
  PRIMARY KEY  (`id`),
  UNIQUE KEY `stub` (`stub`)
) ENGINE=MyISAM

并获取您创建的新 ID,如下所示:

REPLACE INTO Tickets64 (stub) VALUES ('a');
SELECT LAST_INSERT_ID();

Twitter 最近也做了一个名为 Snowflake 的东西,你应该看看他们的 github 存储库

不过主要看flickr做的,比较简单,好操作

关于sql - 多个表中的唯一 ID [MySQL],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3030254/

相关文章:

PHP PDO 如何显示 top SQL 计数

android - 如何以最短时间查询数据库中的 3 个表

mysql - MySQL 快照与 SQL 转储的优缺点

php - 如何获取sql中null和number中的最大值为null?

sql - 循环匹配

MySQL按两列排序

mysql - 我们是否有解决方法可以在 sql 中使用 'where' 的别名

javascript - PHP 将日期转换为 "blank"天/小时/秒前

PHP 获取目录中的文件

php - Laravel 查询生成器 - 使用特殊数据类型进行查询