0

这是表格列:

id | A | detail

id本身就是主键自增。A是我希望它独一无二的领域。

我不想select id from table where A = "XXX"每次都检查表中是否已经存在相同的 A。

我想要的是:

  1. 当表中有相同的 A 时,不要插入,只需返回 id 给我。
  2. 当表中没有相同的 A 时,插入它,然后为我返回 id。

我在用mybatis,记录量很大,1000万左右,所以需要解决方案足够有效。

谁能给我一个想法如何做到这一点?非常感谢。

4

2 回答 2

2
ALTER TABLE tablename ADD UNIQUE (A);

那应该使 A 独一无二。

于 2013-11-02T09:28:38.747 回答
2

保证 A 列是唯一的唯一方法是声明它是唯一的。只有 dbms 才能保证唯一性。

  1. 当表中有相同的 A 时,不要插入,只需返回 id 给我。
  2. 当表中没有相同的 A 时,插入它,然后为我返回 id。

MySQL 支持INSERT...ON DUPLICATE KEY UPDATE语句。它的记录行为是

如果表包含 AUTO_INCREMENT 列并且 INSERT ... ON DUPLICATE KEY UPDATE 插入或更新行,则 LAST_INSERT_ID() 函数返回 AUTO_INCREMENT 值。

谨慎使用——链接的文档引用了错误报告。

我确信 mybatis 提供了一种简单的方法来获取 last_insert_id() 的值。

于 2013-11-02T10:58:52.233 回答