mysql 限定符_我可以使用多个字段作为MySQL中的IGNORE限定符来执行INSERT IGNORE吗?...

我有一个MySQL表,看起来像这样:

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`company_id` int(8) unsigned NOT NULL,

`term_type` varchar(255) NOT NULL DEFAULT '',

`term` varchar(255) NOT NULL DEFAULT '',

我希望能够做到这一点……

INSERT IGNORE INTO table ( company_id, term_type, term )

VALUES( a_company_id, 'a_term_type', 'a_term' )

…但是当group_id,term_type和term的相同组合已经存在时,我希望忽略插入.我知道如果我在尝试插入重复值时在单个字段上有唯一索引,则将忽略插入.有没有办法做我正在尝试的组合?我可以使用多列索引吗?

我试图避免在每次插入之前执行SELECT以检查此组合.因为我在这个表中处理了数亿行数据.

解决方法:

如果使用IGNORE关键字,则执行INSERT语句时发生的错误将被视为警告.例如,如果没有IGNORE,则复制表中现有UNIQUE索引或PRIMARY KEY值的行会导致重复键错误,并且语句将中止.使用IGNORE时,仍未插入行,但未发出错误.

因此,如果您有一个多列主键 – 它可以工作.

标签:mysql,indexing,select,insert

来源: https://codeday.me/bug/20190726/1539334.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值