mysql3108_mysql不存在插入,存在更新(insert duplicate测试)

本文介绍了在MySQL中如何使用INSERT语句处理唯一约束冲突,通过ON DUPLICATE KEY UPDATE进行数据更新。通过示例展示了如何在publisher_id和advertiser_id构成的唯一索引下,正确更新opera_impr_count字段的值。
摘要由CSDN通过智能技术生成

总结

1、在update中,如果这样写”字段=字段“,即使数据有变化也不会更新,可以改为这样”字段=value(字段)“

2、可以将一组字段(多个字段)设为unique(这些字段默认值千万别是null,可以设为‘’),可以指定这组一个或多个来更新数据,没指定的unique字段其值是默认值

基于mysql 5.7.32测试,如下

create table dsp_report(

`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,

`publisher_id` varchar(64) COLLATE utf8mb4_bin DEFAULT '',

`advertiser_id` varchar(64) COLLATE utf8mb4_bin DEFAULT '',

`opera_impr_count` bigint(11) DEFAULT '-1',

PRIMARY KEY (`id`),

UNIQUE KEY `idx_unique_r_day_billing_report` (`publisher_id`,`advertiser_id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

insert into dsp_report(publisher_id,advertiser_id,opera_impr_count) values('pub236088034304','adv1075923487232',111111);

insert into dsp_report(publisher_id,opera_impr_count) values('pub236088034304',222222);

select * from dsp_report;

-- idpublisher_id advertiser_id opera_impr_count

-- 10pub236088034304adv1075923487232111111

-- 11pub236088034304 222222

insert into dsp_report(publisher_id,opera_impr_count) values('pub236088034304',333333) on duplicate key update opera_impr_count=opera_impr_count;

select * from dsp_report;

-- idpublisher_id advertiser_id opera_impr_count

-- 10pub236088034304adv1075923487232111111

-- 11pub236088034304 222222

insert into dsp_report(publisher_id,opera_impr_count) values('pub236088034304',4444444) on duplicate key update opera_impr_count=values(opera_impr_count);

select * from dsp_report;

-- idpublisher_id advertiser_id opera_impr_count

-- 10pub236088034304adv1075923487232111111

-- 11pub236088034304 4444444

注意:本文归作者所有,未经作者允许,不得转载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值