mysql主键和唯一键重复的用法

表名heyf_t10,用来测试的语句为

INSERT INTO heyf_t10 ( empid, deptid, salary)
VALUES
(1, 2, 3) ON DUPLICATE KEY UPDATE empid = 1,
deptid = 2,
salary = 5

原始数据为

如图,唯一键这样设置,那么执行上面的sql后,因为触动了某个唯一键

如果唯一键如下图设置,原始数据和结果数据如下,原因是联合为一键,必须都重复才走进update语句,此为联合唯一键

如果是设置为主键的话,效果跟联合唯一键一样

原文地址:https://www.cnblogs.com/tqliu/p/8398237.html

时间: 2024-10-11 03:30:16

mysql主键和唯一键重复的用法的相关文章

主键、唯一键与唯一索引的区别

一般,我们看到术语“索引”和“键”交换使用,但实际上这两个是不同的.索引是存储在数据库中的一个物理结构,键纯粹是一个逻辑概念.键代表创建来实施业务规则的完整性约束.索引和键的混淆通常是由于数据库使用索引来实施完整性约束. 接下来我们看看数据库中的主键约束.唯一键约束和唯一索引的区别. SQL> select * from v$version; BANNER ----------------------------------------------------------------------

主键、唯一键、唯一索引的使用

主键只能用一个,不能为NULL,唯一(可以多列作为复合主键,当所有设置为复合主键的列都相同是视为唯一,多对多的表中常用) 唯一键,也称(唯一约束),和主键的区别是可以为有多个唯一键并且值可以为NULL,但NULL也不能重复,也就是说只能有一行的值为NULL.它会隐式的创建唯一索引. alter table 表名 add constraint 约束名 unique(列名) 唯一索引,几乎和唯一键一样,但可以添加过滤器来允许重复某些值 CREATE UNIQUE INDEX 索引名 ON 表名 (列

主键与唯一键的区别

sql 的三大类型分别是:数值类型,整形类型,字符串类型 字符串类型的char 和varchar 的区别: 在定义的时候都要指向char(M)varchar(M)的长度,varchar只是表示一定的范围, 1, varchar对存储空间的使用更加灵活 2, char的效率更高 3, 如果存储的字符串的长度是已知固定的,就用char,如果是可变的,就用varchar 案例代码: primary key 主键 unique key 唯一键的区别和用法 设置主键有两种方法: 1.在定义一个字段的时候直

[MySQL日记]主键唯一键重复插入解决方法

我们插入数据的时候,有可能碰到重复数据插入的问题,但是这些数据又是不被允许有重复值: CREATE TABLE stuInfo ( id INT NOT NULL COMMENT '序号', name VARCHAR(20) NOT NULL DEFAULT '' COMMENT '姓名', age INT NOT NULL DEFAULT 0 COMMENT '年龄', PRIMARY KEY (id), UNIQUE KEY uniq_name(name) ) ENGINE=InnoDB D

MySQL 处理插入过程中的主键唯一键重复值办法

200 ? "200px" : this.width)!important;} --> 介绍 本篇文章主要介绍在插入数据到表中遇到键重复避免插入重复值的处理方法,主要涉及到IGNORE,ON DUPLICATE KEY UPDATE,REPLACE:接下来就分别看看这三种方式的处理办法. IGNORE 使用ignore当插入的值遇到主键(PRIMARY KEY)或者唯一键(UNIQUE KEY)重复时自动忽略重复的记录行,不影响后面的记录行的插入, 创建测试表 CREATE TA

主键唯一键重复插入解决方法

[MySQL日记]主键唯一键重复插入解决方法 我们插入数据的时候,有可能碰到重复数据插入的问题,但是这些数据又是不被允许有重复值: ? 1 CREATE TABLE stuInfo ( id INT NOT NULL COMMENT '序号', name VARCHAR(20) NOT NULL DEFAULT '' COMMENT '姓名', age INT NOT NULL DEFAULT 0 COMMENT '年龄', PRIMARY KEY (id), UNIQUE KEY uniq_n

数据表操作与主键、外键、唯一键使用

1.修改数据库(比如修改字符集) mysql> alter database `DB` character set utf8; 2.根据查询结果建立数据表,注意这样复制的数据表是不能将主键也复制过来的,也就是说此时的新表示没有主键的 mysql> create table student_bak select ID,name from student where ID=2; mysql> create table student_bak2 select * from student; 3

mysql主键设置成auto_increment时,进行并发性能测试出现主键重复Duplicate entry 'xxx' for key 'PRIMARY'

mysql主键设置成auto_increment时,进行并发性能测试出现主键重复Duplicate entry 'xxx' for key 'PRIMARY' 解决方法: 在my.cnf的[mysqld]片段中添加设置innodb_autoinc_lock_mode=0 同时注意调大jdbc的活跃链接数,如设置 jdbc.maxActive=300,因为设置innodb_autoinc_lock_mode=0可能导致链接过多. 注意,这种方式只需要在并发性能测试时设置,因为这种方式在插入记录时需

MYSQL主键自动增加的配置

文章一 原文地址: http://ej38.com/showinfo/mysql-202971.html 文章二:   点击转入第二篇文章 在数据库应用,我们经常要用到唯一编号.在MySQL中可通过字段的AUTO_INCREMENT属性来自动生成.MySQL支持多种数据表,每种数据表的自增属性都有所不同. ISAM表 如果把一个NULL插入到一个AUTO_INCREMENT数据列里去,MySQL将自动生成下一个序列编号.编号从1开始,并1为基数递增. 当插入记录时,没有为AUTO_INCREME