关闭

MySQL不重复插入,记录不存在则插入,存在则更新

标签: UNIQUEMySQLDUPLICATE
2501人阅读 评论(0) 收藏 举报
分类:

SQL UNIQUE 约束
UNIQUE 约束唯一标识数据库表中的每条记录。
UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。
PRIMARY KEY 拥有自动定义的 UNIQUE 约束。
请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。
下面的 SQL 在 “Persons” 表创建时在 “Id_P” 列创建 UNIQUE 约束:

CREATE TABLE Persons
(
    Id_P int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255),
    UNIQUE (Id_P)
)

如果需要命名 UNIQUE 约束,以及为多个列定义 UNIQUE 约束,请使用下面的 SQL 语法:

CREATE TABLE Persons
(
    Id_P int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255),
    CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)
)

当表已被创建时,如需在 “Id_P” 列创建 UNIQUE 约束,请使用下列 SQL:

ALTER TABLE Persons ADD UNIQUE (Id_P)

如需命名 UNIQUE 约束,并定义多个列的 UNIQUE 约束,请使用下面的 SQL 语法:

ALTER TABLE Persons ADD CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)

如需撤销 UNIQUE 约束,请使用下面的 SQL:

ALTER TABLE Persons DROP INDEX uc_PersonID

这样每次插入重复记录时MySQL就会提示Duplicate entry value1-value2 for key uni_que,当然你可以在insert的时候加入ignore来忽略掉
现在保证了无重复记录后,我们要开始记录不存在则插入,存在则更新操作

INSERT INTO tablename (field1, field2, field3, ...) VALUES ('value1', 'value2','value3', ...) ON DUPLICATE KEY UPDATE field1='value1', field2='value2', field3='value3', ...

这个语句的意思是,插入值,如果没有该记录执行

INSERT INTO tablename (field1, field2, field3, ...) VALUES ('value1', 'value2','value3', ...)
这一段,如果存在该记录,那么执行
UPDATE field1='value1', field2='value2', field3='value3', ...
10
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

mysql忽略主键冲突、避免重复插入的几种方式

本文转载自: http://www.2cto.com/database/201308/234179.html mysql忽略主键冲突、避免重复插入的几种方式   方案一:使用 ignore 关...
  • chivalrousli
  • chivalrousli
  • 2016-04-15 12:35
  • 12938

批量插入记录,遇到重复记录则为自动更新

在插入大量数据时可能同时遇到两个问题: 如果每条更新执行一次sql性能很低,也容易造成阻塞; 批量插入时又有可能遇到主键 或者 唯一索引重复的问题,导致整个批量插入失败 使用 ON D...
  • rj042
  • rj042
  • 2016-01-22 10:50
  • 3533

MySql避免重复插入记录(根据主键判重)

今天用python抓取数据入库需要避免重复数据插入,在网上找了一些方法: 方案一:使用ignore关键字 如果是用主键primary或者唯一索引unique区分了记录的唯一性,避免重复插入...
  • caomiao2006
  • caomiao2006
  • 2015-07-27 23:13
  • 4252

Thinkphp3.2中解决插入相同数据的问题

解决插入相同数据的问题;ON DUPLICATE KEY UPDATE;`REPLACE INTO `;`ON DUPLICATE KEY UPDATE`与`REPLACE INTO `区别;Thin...
  • hsd2012
  • hsd2012
  • 2016-06-03 15:16
  • 2592

MySQL数据表中记录不存在则插入,存在则更新/不操作

本文整理自
  • ilmlj
  • ilmlj
  • 2014-05-03 20:16
  • 12232

MySQL 记录不存在插入 和 存在则更新和

mysql insert into where not exists INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDA...
  • u012373815
  • u012373815
  • 2017-07-13 14:59
  • 616

MySQL insert 存在则更新,不存在则插入

有时候我们需要用一个表去记录某些经常变动的数据,比如现在有一个表,是用来记录页面被访问的IP和访问次数的。你可以用传统的方法,只需要一个IP字段,只要客户端访问,就把IP写入表中。查询的时候用grou...
  • qingguiyu
  • qingguiyu
  • 2016-12-30 13:07
  • 3595

MySQL insert 存在则更新,不存在则插入

有时候我们需要用一个表去记录某些经常变动的数据,比如现在有一个表,是用来记录页面被访问的IP和访问次数的。你可以用传统的方法,只需要一个IP字段,只要客户端访问,就把IP写入表中。查询的时候用grou...
  • u013891299
  • u013891299
  • 2014-03-05 13:23
  • 733

hibernate批处理、sql存在则更新不存在插入

hibernate中可以从query对象获取connection直接操作数据库 public void setStatus(String arrMsgID[]) { //sql语句...
  • qq_22215879
  • qq_22215879
  • 2017-11-27 10:55
  • 46

MySQL插入数据时,如果记录不存在则insert,如果存在则update

MySQL 当记录不存在时insert,当记录存在时更新 网上基本有三种解决方法。 第一种: 示例一:insert多条记录 假设有一个主键为 client_id 的 clients 表,可以使...
  • AAA123524457
  • AAA123524457
  • 2015-06-19 09:47
  • 18272