首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mysql技巧:如果记录存在则更新如果不存在则插入的三种处理方法

, PRIMARY KEY (`f_id`), UNIQUE KEY `idx_emp_code` (`f_emp_code`) ) ENGINE=InnoDB AUTO_INCREMENT=0...要求: 新增一个员工时,如果该员工已存在(以员工号f_emp_code作为判断依据),则更新,否则插入。而且工资f_salary,更新时,不得低于原工资(即:工资只能涨,不能降)。...10007' , '新人' , '西安' , IF(1000 > f_salary , 1000 , f_salary)); replace into相当于,先检测该记录是否存在(根据表上的唯一键),如果存在...这个方法有一个很大的问题,如果记录存在,每次执行完,主键自增id就变了(相当于重新insert了一条),对于有复杂关联的业务场景,如果主表的id变了,其它子表没做好同步,会死得很难看。...但是有另外一个问题,如果这个表上有不止一个唯一约束,在特定版本的mysql中容易产生dead lock(死锁),见网友文章https://blog.csdn.net/pml18710973036/article

9.2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    redis操作基本命令

    ,以秒为单位 redis> GET key //如果key不存在,则返回nil(并非null),如果value非字符串,则报错,因为GET命令仅能获取string类型数据 redis> APPEND...# 返回值的顺序和传入参数的顺序一样,如果field不存在,则返回nil 获取该key下全部field对应的field及value值(返回值格式为field1 value1然后是...0 返回当前key下所有field: redis> HKEYS key // 当 key 不存在时,返回一个空表 返回当前key下所有field的长度和: redis> HLEN key...//当 key 不存在时,返回 0 删除给定key下的field: redis> HDEL key field //如果是不存在的域,那么它将被忽略掉 LIST: list首先是字符串列表,list...如果 key 不是列表类型,返回一个错误 移除列表中与参数 value 相等的元素: redis> LREM key count value count 的值可以是以下几种: count > 0 :

    1.3K00

    Redis-各数据类型常用命令(含使用示例)

    value 替换子串 setex key seconds value 设置key的值和过期时间 setnx key value 如果不存在则set(SET if Not eXists) ,常用于分布式锁...Set ---- 命令 作用 示例 sadd key member [member …] 向集合插入值,若set不存在则创建之,注意元素不能相同,返回插入成功数量 smembers key 返回集合所有元素...命令 作用 示例 hset key field value 设置哈希集key中field字段的值。若字段不存在创建之并返回1,否则覆盖之并返回0。...判断指定字段是否存在(1存在0不存在) hkeys key 只获取所有字段(field) hvals key 只获取所有值(value) hincrby key field increment...对字段的值加上一个数 hsetnx key field value 如果字段不存在才设置字段和值(返回1),存在则操作无效(返回0) ?

    44010

    Redis Hash(Hash) 复习

    新增(HSET、HMSET) HSET(推荐) # HSET key field value [field value ...] # key 名称 field 第二维数组索引 # 如果哈希表不存在,则创建...存在且旧值已被覆盖,返回 0 > HSET myhash 1 zhangsan 2 lisi 3 wangwu (integer) 3 不存在时创建(HSETNX) # 成功,返回 1 。...(4.0后已遗弃) # HMSET key field value [field value ...] # key 名称 field 第二维数组索引 vakue值 # 如果哈希表不存在,则创建,存在即覆盖...不存在时,返回 nil > HGET myhash 1 "zhangsan2" 获取给定字段多值(HMGET) # 返回给定字段值,不存在返回nil # HMGET key field [field...不存在时,返回 0 # HLEN key > HLEN myhash1 (integer) 3 其他操作 判断字段是否存在(HEXISTS) # 存在,返回 1 ,不存在,返回 0 # HEXISTS

    1.7K30

    一文了解Redis常用命令

    1"study:0>exists dalao"0"删除键del key [key2, key3....]这个命令返回删除成功的键总数,如果删除的键都不存在,则返回0study:0>del zhangsan...若key不存在,则返回nonestudy:0>type abc"none"字符串类型设置值set key value [ex seconds] [px milliseconds] [nx|xx]study...:0>get younullstudy:0>incr you"1"study:0>get you"1"哈希类型设置值hset key field value如果设置成功,会返回 1。...当列表不为空的时候,会立即返回相应的值如果是多个键,那么brpop会从左到右遍历键,一旦某个键有元素,则立即返回如果是多个客户端同时执行相同的阻塞命令,那么最先执行的那个客户端,可以获取到对应的值集合类型集合也是用来保存多个元素的...3"0"study:0>sismember temp_set 1"1"随机返回元素srandmember key [count]srandmember命令会随机从集合中返回count个元素,如果count

    32220

    Redis键时间老化的测试

    ,key2…)的value; SETNX(key, value) 如果不存在名称为 key 的 string,则向库中添加 string,名称为 key,值为 value; SETEX(key, time...key{$i} 的 string 都不存在,则向库中添加 string,名称 key{$i} 赋值为 value{$i}; INCR(key) 名称为 key 的 string 增1操作; INCRBY...count 为0,删除所有值为 value 的元素,count>0从 头至尾删除 count 个值为 value 的元素,count0从尾到头删除|count|个值为value的元素; LPOP(key...即当 timeout 为0时,若遇到名称为 key{$i} 的 list 不存在或该 list 为空,则命令结束。...如果 timeout>0,则遇到上述情况时,等待 timeout 秒,如果问题没有解决,则对 key{$i}+1 开始的 list 执行 pop 操作; BRPOP(key1, key2,… key{$

    47320

    详述 JedisCommands 接口中的方法说明

    字段对应的值 * @return 如果该字段已经存在,那么将会更新该字段的值,返回 0,如果字段不存在,则新创建一个并且返回 1 */ Long hset(String key..., String field, String value); /** * 如果该 key 对应的值是一个哈希表,则返回对应字段的值 * 如果不存在该字段,或者 key 不存在...* @param field 哈希表字段 * @param value 字段对应的值 * @return 如果该字段已经存在,则返回 0,若字段不存在,则创建后 set,返回 1...key 集合中的元素则忽略 * 如果 key 集合不存在则被视为一个空的集合,该命令返回 0 * * 如果 key 的类型不是一个集合,则返回错误 *...的成员,则返回 1,如果不是或者集合 key 不存在,则返回 0 */ Boolean sismember(String key, String member); /**

    1.1K20

    Redis常用命令整理

    获取字符串长度         strlen key         返回键值的长度,如果键不存在则返回0     同时 获得/设置 多个键值         mget key [key.....]        ...,返回的结果是字段和字段值组成的列表     判断字段是否存在         hexists key field         存在返回 1 ,否则返回 0     当字段不存在时赋值        ...如果没有找到 pivot 返回 -1 如果key 不存在或为空,返回 0     将元素从一个列表转到另一个列表R         rpoplpush source destination        ...如果 count 的值大于集合中的元素个数,则                      srandmember 会返回集合中的全部元素                 当 count 为负数时,srandmember...1表示设置成功,返回 0 则表示键不存在或设置失败         如果想知道一个键还有多久会被删除,可以使用 ttl 命令。

    98570

    详述 JedisCommands 接口中的方法说明

    字段对应的值 * @return 如果该字段已经存在,那么将会更新该字段的值,返回 0,如果字段不存在,则新创建一个并且返回 1 */ Long hset(String key..., String field, String value); /** * 如果该 key 对应的值是一个哈希表,则返回对应字段的值 * 如果不存在该字段,或者 key 不存在...* @param field 哈希表字段 * @param value 字段对应的值 * @return 如果该字段已经存在,则返回 0,若字段不存在,则创建后 set,返回 1...key 集合中的元素则忽略 * 如果 key 集合不存在则被视为一个空的集合,该命令返回 0 * * 如果 key 的类型不是一个集合,则返回错误 *...的成员,则返回 1,如果不是或者集合 key 不存在,则返回 0 */ Boolean sismember(String key, String member); /**

    3.5K41

    Redis常用命令整理

    获取字符串长度         strlen key         返回键值的长度,如果键不存在则返回0     同时 获得/设置 多个键值         mget key [key.....]        ...,返回的结果是字段和字段值组成的列表     判断字段是否存在         hexists key field         存在返回 1 ,否则返回 0     当字段不存在时赋值        ...如果没有找到 pivot 返回 -1 如果key 不存在或为空,返回 0     将元素从一个列表转到另一个列表R         rpoplpush source destination        ...如果 count 的值大于集合中的元素个数,则                      srandmember 会返回集合中的全部元素                 当 count 为负数时,srandmember...1表示设置成功,返回 0 则表示键不存在或设置失败         如果想知道一个键还有多久会被删除,可以使用 ttl 命令。

    99490
    领券