栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

mysql-插入后忽略获取主键

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

mysql-插入后忽略获取主键

文档的

LAST_INSERT_ID()
说:

如果使用INSERT
IGNORE并且忽略该行,则AUTO_INCREMENT计数器不会增加,并且LAST_INSERT_ID()返回0,这表明没有插入行。

知道了这一点,您可以将其分为多个步骤:

  • 插入忽略
  • 如果LAST_INSERT_ID(),则完成(插入新行)
  • else从yourtable WHERe中选择your_primary键(您插入的数据的UNIQUE约束)

美国各州的示例:

id  | abbrev | other_data 1  | AL     | ... 2  | AK     |UNIQUE KEY abbr (abbrev)

现在,插入新行:

INSERT IGNORE INTO `states` (`abbrev`,`other_data`) VALUES ('AZ','foo bar');> OKSELECt LAST_INSERT_ID();> "3"// we have the ID, we're done

插入将被忽略的行:

INSERT IGNORE INTO `states` (`abbrev`,`other_data`) VALUES ('AK','duplicate!');> OKSELECT LAST_INSERT_ID();> "0"// oops, it already exists!SELECT id FROM `states` WHERe `abbrev` = 'AK'; // our UNIQUE constraint here> "2"// there we go!

或者,有一种可能的解决方法可以一步完成此操作-使用

REPLACE INTO
而不是
INSERT IGNORE INTO
-
语法非常相似。但是请注意,这种方法会
产生副作用 -这些 副作用 可能对您不重要:

  • REPLACE删除并重新创建行
    • 所以DELETE触发器被触发了
    • 此外,即使该行存在,主ID也将递增
    • INSERT IGNORE
      保留旧的行数据,
      REPLACE
      将其替换为新的行数据


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/408402.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号