安全架构-幂等性设计
幂等性设计的文章有几篇了,虽然侧重点不一样分为了api幂等,http幂等,sql幂等,实际上是一回事。
本篇从侧重SQL语句操作入手介绍sql操作保证的幂等性。
前言
一、SQL幂等场景
一、查询,select * from user where xxx
,不会对数据产生任何变化,具备幂等性。
二、新增,insert into user(userid,name) values(1,'a'),
如userid为唯一主键,即重复操作上面的业务,只会插入一条用户数据,具备幂等性。
如userid不是主键,可以重复,那上面业务多次操作,数据都会新增多条,不具备幂等性。
三、修改,区分直接赋值和计算赋值。
1、直接赋值,update user set point = 20 where
userid=1,不管执行多少次,point都一样,具备幂等性。
2、计算赋值,update user set point = point+ 20 where userid=1,每次操作point数据都不一样,不具备幂等性。
四、删除&