SQL备份过程出现小几率主键重复问题

处理数据备份时候难免出现短时间内多次请求数据备份,由于设置了主键约束,造成备份失败,以下是问题解决关键,给主键设置时间戳,

CONCAT(id,unix_timestamp()) 直接拼接时间戳
时间戳再非常短的时间内请求还是会出现主键约束问题

 insert into 备份表
	(id, type)
	select CONCAT(id,unix_timestamp()), type
	from 主表

现在采用uuid
LEFT(CONCAT(id,UUID()),48) 拼接uuid后截取48位

由于主键设置了50约束长度 所以使用left函数截取一下

  insert into 备份表
	(id, type)
	select LEFT(CONCAT(id,UUID()),48) id , type
	from 主表
	
测试SQL
select LEFT(CONCAT(id,UUID()),48) id from 主表

这样就有效解决了备份出现的主键约束问题

你可能感兴趣的:(数据库,mysql,java,spring)