我是MySQL的新手,我遇到了一个唯一标识符标记的问题。这是我的员工桌。
雇员表(MySQL)
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是具有自动增量的主键.我希望每个员工都有一个令牌,并且每个员工的令牌应该是唯一的。
标记应该类似于:
32f41e07b9e8393ae250ad617801a155我怎样才能做到这一点?
My Approach
SELECT SUBSTRING(MD5(RAND()) FROM 1 FOR 16) AS myrandomstring但我认为上述查询不能保证每个员工的唯一性。
发布于 2020-08-21 14:03:48
发布于 2020-08-21 13:59:49
为此,您可以依赖外部库,例如ramsey/uuid,保留带有常规无符号整数ID的表,并创建另一列uuid (类型为VARCHAR() ),我不指望mysql生成我的UUID --我更愿意编程地这样做。
发布于 2020-08-21 19:05:05
UUID是生成唯一字符串id的好方法,不会在每次生成时重复。
UUID唯一关心的是长度,这会使索引不能作为主键(自动增量int)。但这取决于您的数据大小和逻辑需求。
我建议从您的客户端代码生成UUID,因为如果您需要的话,维护或更新非常清楚和容易。
https://stackoverflow.com/questions/63524214
复制相似问题