upsert小验证

建表语句

CREATE TABLE my_table (
    id INT AUTO_INCREMENT,
    column1 INT,
    column2 INT,
    column3 INT,
    data_column VARCHAR(255),
    PRIMARY KEY (id),
    UNIQUE (column1, column2, column3)
);

初始化语句

INSERT INTO my_table (column1, column2, column3, data_column)
VALUES (1, 2, 3, 'aaa')
ON DUPLICATE KEY UPDATE data_column=VALUES(data_column);

INSERT INTO my_table (column1, column2, column3, data_column)
VALUES (11, 12, 13, 'bbb')
ON DUPLICATE KEY UPDATE data_column=VALUES(data_column);

数据库数据

再次执行upsert

INSERT INTO my_table (column1, column2, column3, data_column)
VALUES (1, 2, 3, 'ccc')
ON DUPLICATE KEY UPDATE data_column=VALUES(data_column);

数据库数据

小结
1.upsert语句执行的时候没有位于约束冲突就插入,有冲突就更新。唯一约束可以是主键也可以是唯一索引,只要有一个冲突就算冲突。

2.如果是要更新多个字段需要把字段一个个列举出来,如下

INSERT INTO my_table (column1, column2, column3, data_column)
VALUES (11, 12, 13, 'bbb')
ON DUPLICATE KEY UPDATE data_column=VALUES(data_column),data_column2=VALUES(data_column2),data_column3=VALUES(data_column3);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值