首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试多次插入并获取失败的ID列表

问尝试多次插入并获取失败的ID列表
EN

Stack Overflow用户
提问于 2013-02-25 16:17:41
回答 1查看 2.6K关注 0票数 2

在MySQL中,是否可以在一个表中插入多个行,并返回成功或失败的行的列表?

或者,您是否必须在各自的语句中单独插入每一行,以确定插入是否成功?

(是否可以批量提交多个插入,但每个插入的成功在任何其他数据库中都是单独说明的?例如,PostgreSQL?)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-25 19:02:53

在执行大容量插入时,无法找出哪些行失败。通常,如果您正在执行多个插入,并且其中一个由于任何原因而失败,则查询将失败。

但是,您可以采用一些选项来确保查询成功。

1)使用REPLACE INTO而不是INSERT INTO。如果主键已经存在,这将导致MySQL覆盖现有行。

2)使用INSERT IGNORE INTO跳过已有的行。缺点是你不知道哪些行被跳过了。

3)使用INSERT INTO ... ON DUPLICATE KEY UPDATE ...。这将允许您更新已经存在的行的一个、两个或所有字段。如果您有一个空字段,您也可以将其用作伪故障指示器。

代码语言:javascript
复制
// clear out failures from previous runs
UPDATE table SET failures = 0;

// insert the row if we can, otherwise record the failure and move on without updating the row
INSERT INTO table
    (id, name) VALUES 
    (1, 'John'),
    (2, 'Steve'),
    ...
    (500, 'Tim')
    ON DUPLICATE KEY UPDATE failures = failures + 1;

// check failures
SELECT id, name, failures FROM table;
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15062696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档