【问题标题】:MySQL insert ignore for duplicates but fail on foreign key errorsMySQL插入忽略重复但因外键错误而失败
【发布时间】:2018-12-13 16:56:23
【问题描述】:

有没有办法在单个 MySQL 语句中将记录插入表中,忽略重复键错误,但如果外键约束失败则失败?

insert ignore into `table` ...

将忽略重复和外键错误,因此这对我的目的不起作用。

【问题讨论】:

    标签: mysql sql insert sql-insert


    【解决方案1】:
    INSERT IGNORE 
    

    将忽略所有错误,这是一个全局忽略。

    您可以使用以下语句忽略重复的键而不是其他键

    INSERT INTO sample (col1, col2, col3) VALUES ('val1','val2','val3') ON DUPLICATE KEY UPDATE col1=col1;
    

    【讨论】:

    • 另外,请阅读 REPLACE -dev.mysql.com/doc/refman/8.0/en/replace.html“REPLACE 的工作方式与 INSERT 完全相同,只是如果表中的旧行与 PRIMARY KEY 或 UNIQUE 索引的新行具有相同的值,在插入新行之前删除旧行”
    • 如果要插入的表由于删除/重新插入而具有引用它的外键,则 REPLACE 可能不起作用
    猜你喜欢
    • 2010-10-23
    • 2011-01-26
    • 2014-06-23
    • 1970-01-01
    • 1970-01-01
    • 2017-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多