这是表格列:
id | A | detail
id
本身就是主键自增。A
是我希望它独一无二的领域。
我不想select id from table where A = "XXX"
每次都检查表中是否已经存在相同的 A。
我想要的是:
- 当表中有相同的 A 时,不要插入,只需返回 id 给我。
- 当表中没有相同的 A 时,插入它,然后为我返回 id。
我在用mybatis
,记录量很大,1000万左右,所以需要解决方案足够有效。
谁能给我一个想法如何做到这一点?非常感谢。
这是表格列:
id | A | detail
id
本身就是主键自增。A
是我希望它独一无二的领域。
我不想select id from table where A = "XXX"
每次都检查表中是否已经存在相同的 A。
我想要的是:
我在用mybatis
,记录量很大,1000万左右,所以需要解决方案足够有效。
谁能给我一个想法如何做到这一点?非常感谢。
ALTER TABLE tablename ADD UNIQUE (A);
那应该使 A 独一无二。
保证 A 列是唯一的唯一方法是声明它是唯一的。只有 dbms 才能保证唯一性。
MySQL 支持INSERT...ON DUPLICATE KEY UPDATE语句。它的记录行为是
如果表包含 AUTO_INCREMENT 列并且 INSERT ... ON DUPLICATE KEY UPDATE 插入或更新行,则 LAST_INSERT_ID() 函数返回 AUTO_INCREMENT 值。
谨慎使用——链接的文档引用了错误报告。
我确信 mybatis 提供了一种简单的方法来获取 last_insert_id() 的值。