记一次mysql插入更新

创建了一个名为`ipstats`的表,包含`ip`、`clicks`和`name`字段,其中`ip`和`name`构成唯一索引。通过`INSERTINTO...ONDUPLICATEKEYUPDATE`语句,实现了当数据已存在时更新`clicks`字段,否则插入新记录的功能。
摘要由CSDN通过智能技术生成

1.新建表(必须存在unique,作为判断是插入还是更新的依据)

DROP TABLE IF EXISTS `ipstats`;
CREATE TABLE `ipstats`  (
  `ip` varchar(15) CHARACTER SET utf8mb4 COLLATE utf8mb4_zh_0900_as_cs NOT NULL,
  `clicks` smallint UNSIGNED NOT NULL DEFAULT 0,
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_zh_0900_as_cs NULL DEFAULT NULL,
  UNIQUE INDEX `ip`(`ip`, `name`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_zh_0900_as_cs ROW_FORMAT = Dynamic;

2.执行sql观察

INSERT INTO ipstats VALUES('192.168.0.1', 1,1) ON DUPLICATE KEY UPDATE clicks=clicks+1;

第一次执行:
在这里插入图片描述
查看该表索引
在这里插入图片描述
由于存在该唯一索引数据了,所以第二次应该是更新
再次执行

INSERT INTO ipstats VALUES('192.168.0.1', 1,1) ON DUPLICATE KEY UPDATE clicks=clicks+1;

查看结果
在这里插入图片描述
发现第二次做了更新操作,此sql可以简化插入或更新代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值