“数据库 Key 键冲突”通常指主键(Primary Key)、唯一键(Unique Key)或缓存/中间件中的 Key 发生冲突。不同场景处理方式不同,下面系统说明。
MySQL
INSERT IGNORE INTO user(id, name) VALUES (1, 'Tom');
(冲突则忽略)
冲突时更新(UPSERT)
INSERT INTO user(id, name) VALUES (1, 'Tom')
ON DUPLICATE KEY UPDATE name = 'Tom';
PostgreSQL
INSERT INTO user(id, name) VALUES (1, 'Tom')
ON CONFLICT (id) DO UPDATE SET name = 'Tom';
IF NOT EXISTS (SELECT 1 FROM user WHERE id = 1)
INSERT ...
⚠️ 并发下仍有风险
-- 查找重复主键
SELECT id, COUNT(*)
FROM user
GROUP BY id
HAVING COUNT(*) > 1;
然后删除或合并数据。
✅ 统一 Key 命名规范
业务:模块:唯一标识
user:profile:1001
order:cache:20260101
✅ 加前缀 / 命名空间
SET app1:user:1 xxx
SET app2:user:1 yyy
✅ 使用 DB 分库
SELECT 1
如果你能告诉我:
我可以给你更精确的解决方案和 SQL 示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。