首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在MYSQL中生成唯一令牌

如何在MYSQL中生成唯一令牌
EN

Stack Overflow用户
提问于 2020-08-21 13:55:37
回答 3查看 2.2K关注 0票数 2

我是MySQL的新手,我遇到了一个唯一标识符标记的问题。这是我的员工桌。

雇员表(MySQL)

代码语言:javascript
复制
CREATE TABLE employees (
    emp_no      INT             NOT NULL,  --  AUTO_INCREMENT    
    first_name  VARCHAR(14)     NOT NULL,
    last_name   VARCHAR(16)     NOT NULL,     
    hire_date   DATE            NOT NULL,
    token varchar(100) not null,
    PRIMARY KEY (emp_no)                   
);

我在MySQL里有雇员桌。emp_no是具有自动增量的主键.我希望每个员工都有一个令牌,并且每个员工的令牌应该是唯一的。

标记应该类似于:

代码语言:javascript
复制
32f41e07b9e8393ae250ad617801a155

我怎样才能做到这一点?

My Approach

代码语言:javascript
复制
SELECT SUBSTRING(MD5(RAND()) FROM 1 FOR 16) AS myrandomstring

但我认为上述查询不能保证每个员工的唯一性。

EN

回答 3

Stack Overflow用户

发布于 2020-08-21 14:03:48

您可以使用UUID Mysql函数生成一个id。

从您的研究来看,函数短的似乎是一个更好的选择。

代码语言:javascript
复制
mysql> SELECT UUID_SHORT();
    -> 92395783831158784
票数 1
EN

Stack Overflow用户

发布于 2020-08-21 13:59:49

为此,您可以依赖外部库,例如ramsey/uuid,保留带有常规无符号整数ID的表,并创建另一列uuid (类型为VARCHAR() ),我不指望mysql生成我的UUID --我更愿意编程地这样做。

票数 0
EN

Stack Overflow用户

发布于 2020-08-21 19:05:05

UUID是生成唯一字符串id的好方法,不会在每次生成时重复。

UUID唯一关心的是长度,这会使索引不能作为主键(自动增量int)。但这取决于您的数据大小和逻辑需求。

我建议从您的客户端代码生成UUID,因为如果您需要的话,维护或更新非常清楚和容易。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63524214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档