需求:
软件常有一些配置数据需要存储到数据库当中比如:系统使用的发件箱、软件的字体、大小、颜色等...。
数据要求存储到数据库中,便于修改。
设计:
因为配置类信息,通常是property value 形式的值对,可以设计一张表,每一个字段对应一个property存储到一个库表里。但这个表比较特殊,因为他要么为空,要么就只有一条记录。在多用户的场景下,要保证功能的正确行为要按如下方式处理:
存储配置信息的操作过程如下:
transaction begin
1.删除配置表所有数据
2.插入新的配置数据,并且指定固定主键(比如:1)
transaction commit
通过这样的代码一方面比较简单,另一方面解决了库表只存储一行记录的问题。这里隐含解决了两个问题:
1.在删记录时由于事务没有结束,而在事务结束时新的配置数据已经插入。配置数据的使用模块不会遇到配置数据不存在的情况。
2.如果同时有多个用户在同时进行配置。只有第一个提交事务的会成功,其他的由于主键冲突都会失败。
......
软件常有一些配置数据需要存储到数据库当中比如:系统使用的发件箱、软件的字体、大小、颜色等...。
数据要求存储到数据库中,便于修改。
设计:
因为配置类信息,通常是property value 形式的值对,可以设计一张表,每一个字段对应一个property存储到一个库表里。但这个表比较特殊,因为他要么为空,要么就只有一条记录。在多用户的场景下,要保证功能的正确行为要按如下方式处理:
存储配置信息的操作过程如下:
transaction begin
1.删除配置表所有数据
2.插入新的配置数据,并且指定固定主键(比如:1)
transaction commit
通过这样的代码一方面比较简单,另一方面解决了库表只存储一行记录的问题。这里隐含解决了两个问题:
1.在删记录时由于事务没有结束,而在事务结束时新的配置数据已经插入。配置数据的使用模块不会遇到配置数据不存在的情况。
2.如果同时有多个用户在同时进行配置。只有第一个提交事务的会成功,其他的由于主键冲突都会失败。
......