mysql中在表中insert数据时,有重复主键id时,变成update
2014-03-31 16:14
681 查看
MySQL 自4.1版以后开始支持INSERT … ON DUPLICATE KEY UPDATE语法
例如:
方法一:
方法二:
总结如下:
如果表中不存在主键记录,replace和insert .... update都与insert是一样的特点。
如 果表中存在主键记录,replace相当于执行delete 和 insert两条操作,而insert .... update的相当于执行if exist do update else do insert操作。因此,如果replace填充的字段不全,则会导致未被更新的字段都会修改为默认值,并且如果有自增id的话,自增id会变化为最新的 值(这样如果是以自增id为标志的话可能导致记录丢失);而insert*update只是更新部分字段,对于未被更新的字段不会变化(不会强制修改为默 认值)。
多条记录操作:
insert into t(a,b,c) values ('a1','b1','c1'),('a2','b2','c2')
例如:
id | name | sex | age |
1 | kathy | male | 23 |
2 | Javer | famale | 32 |
3 | Mike | male | 19 |
INSERT INTO kk (id, name,sex) VALUES(1,'kara','ssss') ON DUPLICATE KEY UPDATE id=1;
方法二:
REPLACE INTO kk(id, name,sex) VALUES (12,'','female'),(13,'Emily','femse');
总结如下:
如果表中不存在主键记录,replace和insert .... update都与insert是一样的特点。
如 果表中存在主键记录,replace相当于执行delete 和 insert两条操作,而insert .... update的相当于执行if exist do update else do insert操作。因此,如果replace填充的字段不全,则会导致未被更新的字段都会修改为默认值,并且如果有自增id的话,自增id会变化为最新的 值(这样如果是以自增id为标志的话可能导致记录丢失);而insert*update只是更新部分字段,对于未被更新的字段不会变化(不会强制修改为默 认值)。
多条记录操作:
insert into t(a,b,c) values ('a1','b1','c1'),('a2','b2','c2')
on duplicate key update t.c=values(t.c)
相关文章推荐
- MySql insert一条数据时使用自增主键,并在返回对象中给ID赋值
- mybatis+mysql insert添加数据后返回数据主键id
- Mysql实现数据的不重复写入(insert if not exists)以及新问题:ID自增不连续的解答
- Mysql实现数据的不重复写入(insert if not exists)以及新问题:ID自增不连续的解答
- mybatis 怎样在insert数据之后返回主键id (MySQL,Oracle数据库)
- Mysql实现数据的不重复写入(insert if not exists)以及新问题:ID自增不连续的解答
- Mysql实现数据的不重复写入(insert if not exists)以及新问题:ID自增不连续的解答
- SQL 语句之insert语句插入数据:若表中有重复的主键或数据继续插入解决方案
- PHP+MySQL insert数据到ID自增的表中相关指令
- 事务的回滚对于拥有自增主键的表来说,insert的数据是被删除,update和delete的数据是被恢复
- Mysql多线程、多用户同时操作数据库获取当前用户操作的最新主键值(获取使用MySQL的LAST_INSERT_ID)
- mybatis的insert元素属性详解 及 在insert插入数据获取主键id的值
- mysql查询user_id重复数据
- mysql 主键id自增长,插入数据的方法
- 记录:mysql中的case when|on duplicate key update|重复插入返回主键的用法
- Mysql多线程、多用户同时操作数据库获取当前用户操作的最新主键值(mysql_insert_id() 函数返回上一步 INSERT 操作产生的 ID)
- Mybatis+MySQL insert 后取出插入数据的自增主键值
- MYSQL——DML : 数据操作语句 (insert update delete)
- MySQL生产库Insert了2次同样的记录但是主键ID是不一样的问题的分析过程
- Mysql中剔除重复字段并按主键降序排序后找出主键值最大的数据