mysql replace into 用法笔记

来源:互联网 发布:上海行知教育教学网点 编辑:程序博客网 时间:2024/06/07 23:49

实际项目中经常遇到向一个表中插入一条数据,如果主键重复的时候就作更新操作,一般发生在获取主键值的情况下。

1. 创建数据库表

CREATE TABLEzdytest(

id  intNOT NULL ,

name  varchar(255)NULL ,

PRIMARY KEY (id)

);

2. 插入一条数据

INSERT INTO zdytest (id,NAME) VALUES(1,'张三')

3. 常规实现方式

查询---->判断是否存在---->不存在插入,存在修改。

4. 判断脚本实现方式

IF NOTEXISTS(select* from zdytest where id= 1)

INSERT INTOzdytest(id,NAME)VALUES(1,'李四')

ELSE

UPDATE zdytestset name='王五'where id=1

5. Mysql自带的replace into

REPLACEinto zdytest (id,NAME) VALUES(1,'李四');

6. 写法形式

replace into tbl_name(col_name, ...)values(...)

replace into tbl_name(col_name, ...) select...

replaceinto tbl_name set col_name=value, ...

 

7. 实现逻辑说明

replace into跟 insert 功能类似,不同点在于:replace into 首先尝试插入数据到表中, 1. 如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据。 2. 否则,直接插入新数据。

 

8. 注意事项

插入数据的表必须有主键或者是唯一索引!否则的话,replaceinto 会直接插入数据,这将导致表中出现重复的数据。
0 0
原创粉丝点击