我有一个表记录用户参加考试的情况,一个考试只允许参加3次,如果都失败则没有通过,请问。。。
我有一个attempt列记录用户参加这个考试的次数。
第一次插入一个行数据attempt=1, 第二次要再插一条attempt=2还是修改第一次插入的那一行把attempt修改成2?
我觉得要是覆盖第一行的数据的话,那是不是会丢数据?
用三组attempt吧,
attempt1,attempt2,attempt3
采用键值对的思想,默认值可以设置成-1,参加过一次考试后,录入成绩,直至三次机会全部用完
建议用两张表,主表是用户和考试的关联,字表是考试记录。
在主表中添加考试是否通过的字段,只要有一次考试通过,就更新主表里的是否通过字段。这样方便查询通过的用户。
初始化的时候insert一条数据,之后采用update更新。
先读出当前的attemp = n
if n>= 4 throws new Exception();
affectRow = update xx set attemp = attemp + 1 where attemp = n
if affectRow != 1 说明已经有人更新了,让用户或者自己重试
else 更新成功
这个要看你是只记录最后一次考试还是需要每次考试都要记录,比如说有没有涉及记录考试时间的,是否每次的时间都要记录,一般来说每次的考试时间肯定都是不同的,根据你的实际业务决定,如果只是记录最后一次,用update,如果是次次都记录用insert