自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何防止MySQL重復(fù)插入數(shù)據(jù),這篇文章會(huì)告訴你

數(shù)據(jù)庫 MySQL
在MySQL進(jìn)行數(shù)據(jù)插入操作時(shí),總是會(huì)考慮是否會(huì)插入重復(fù)數(shù)據(jù),之前的操作都是先根據(jù)主鍵或者唯一約束條件進(jìn)行查詢,有就進(jìn)行更新沒有就進(jìn)行插入。代碼反復(fù)效率低下。

在MySQL進(jìn)行數(shù)據(jù)插入操作時(shí),總是會(huì)考慮是否會(huì)插入重復(fù)數(shù)據(jù),之前的操作都是先根據(jù)主鍵或者唯一約束條件進(jìn)行查詢,有就進(jìn)行更新沒有就進(jìn)行插入。代碼反復(fù)效率低下。

新建表格

  1. CREATE TABLE `person`  ( 
  2.   `id` int NOT NULL COMMENT '主鍵'
  3.   `namevarchar(64) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '姓名'
  4.   `age` int NULL DEFAULT NULL COMMENT '年齡'
  5.   `address` varchar(512) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '地址'
  6.   PRIMARY KEY (`id`) USING BTREE 
  7. ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic

添加三條數(shù)據(jù)如下:

 

如何防止MySQL重復(fù)插入數(shù)據(jù),這篇文章會(huì)告訴你

我們這邊可以根據(jù)插入方式進(jìn)行規(guī)避:

1. insert ignore

insert ignore 會(huì)自動(dòng)忽略數(shù)據(jù)庫已經(jīng)存在的數(shù)據(jù)(根據(jù)主鍵或者唯一索引判斷),如果沒有數(shù)據(jù)就插入數(shù)據(jù),如果有數(shù)據(jù)就跳過插入這條數(shù)據(jù)。

  1. 插入SQL如下: 
  2. insert ignore into person (id,name,age,address) values(3,'那誰',23,'甘肅省'),(4,'我的天',25,'浙江省'); 

再次查看數(shù)據(jù)庫就會(huì)發(fā)現(xiàn)僅插入id為4的數(shù)據(jù),由于數(shù)據(jù)庫中存在id為3的數(shù)據(jù)所以被忽略。

 

如何防止MySQL重復(fù)插入數(shù)據(jù),這篇文章會(huì)告訴你

2. replace into

replace into 首先嘗試插入數(shù)據(jù)到表中, 1. 如果發(fā)現(xiàn)表中已經(jīng)有此行數(shù)據(jù)(根據(jù)主鍵或者唯一索引判斷)則先刪除此行數(shù)據(jù),然后插入新的數(shù)據(jù)。 2. 否則,直接插入新數(shù)據(jù)。

  1. 插入SQL如下: 
  2. replace into person (id,name,age,address) values(3,'那誰',23,'甘肅省'),(4,'我的天',25,'浙江省'); 

首先我們將表中數(shù)據(jù)恢復(fù),然后進(jìn)行插入操作后發(fā)現(xiàn)id為3的數(shù)據(jù)發(fā)生了改變同時(shí)新增了id為4的數(shù)據(jù)。

 

如何防止MySQL重復(fù)插入數(shù)據(jù),這篇文章會(huì)告訴你

3. insert on duplicate key update

insert on duplicate key update 如果在insert into語句的末尾指定了on duplicate key update + 字段更新,則會(huì)在出現(xiàn)重復(fù)數(shù)據(jù)(根據(jù)主鍵或者唯一索引判斷)的時(shí)候按照后面字段更新的描述對(duì)該信息進(jìn)行更新操作。

  1. 插入SQL如下: 
  2. insert into person (id,name,age,address) values(3,'那誰',23,'甘肅省'on duplicate key update name='那誰', age=23, address='甘肅省'

首先我們將表中數(shù)據(jù)恢復(fù),然后在進(jìn)行插入操作時(shí),發(fā)現(xiàn)id為3的數(shù)據(jù)發(fā)生了改變,進(jìn)行了更新操作。

 

如何防止MySQL重復(fù)插入數(shù)據(jù),這篇文章會(huì)告訴你

我們可以根據(jù)自己的業(yè)務(wù)需求進(jìn)行方法的選擇。

責(zé)任編輯:未麗燕 來源: 今日頭條
相關(guān)推薦

2018-02-08 18:16:39

數(shù)據(jù)庫MySQL鎖定機(jī)制

2020-07-09 10:21:03

網(wǎng)絡(luò)排錯(cuò)TCPIP

2023-04-06 11:10:31

閉包JavaScript

2023-12-24 22:42:57

數(shù)據(jù)庫分片中間件

2017-07-12 16:56:42

卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)數(shù)據(jù)CNN

2017-07-05 15:42:58

卷積神經(jīng)網(wǎng)絡(luò)Non-Euclide計(jì)算機(jī)視覺

2022-08-29 10:08:50

跨集群

2019-01-08 07:43:53

路由器調(diào)制解調(diào)器

2019-10-31 09:48:53

MySQL數(shù)據(jù)庫事務(wù)

2019-01-28 11:24:53

Windows 功能系統(tǒng)

2023-11-30 08:27:38

泛化調(diào)用架構(gòu)

2021-11-04 10:34:02

JavaScript繼承編程

2022-02-18 00:13:53

JavaScript編程語言數(shù)組

2017-07-10 13:45:33

自動(dòng)編碼數(shù)據(jù)生成GAN

2024-04-12 00:00:00

localhost計(jì)算機(jī)機(jī)制

2019-01-30 13:44:34

JVM內(nèi)存服務(wù)器

2018-11-30 09:38:18

2019-07-28 20:15:07

2020-02-21 17:07:08

人生第一份工作大學(xué)社交網(wǎng)絡(luò)

2019-07-10 15:15:23

JVM虛擬機(jī)Java
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)