给定2张桌子:
人
人最喜欢的颜色
一个人可以有一种或多种喜欢的颜色。这些颜色使用多选控件(CheckBoxList、ListBox w/ multi-select enabled)进行更新。
过去,如果我要更新此人的颜色,我会:
- 开始交易
- 删除此人的所有颜色记录
- 为每个选定的颜色插入记录
- 提交事务
这是处理在“对多”子表中添加/更新/删除记录的多选控件的标准和最佳实践吗?
谢谢!
给定2张桌子:
人
人最喜欢的颜色
一个人可以有一种或多种喜欢的颜色。这些颜色使用多选控件(CheckBoxList、ListBox w/ multi-select enabled)进行更新。
过去,如果我要更新此人的颜色,我会:
这是处理在“对多”子表中添加/更新/删除记录的多选控件的标准和最佳实践吗?
谢谢!
我通常不会删除所有旧颜色,而只会删除不再喜欢的颜色,然后我只会添加实际上是新的颜色。
如果您没有被锁定在两个表中,那么按照您所描述的方式存储值的一种相对简单的方法是使用数组作为最喜欢的颜色的数据类型,而不是使用单独的表。
http://www.postgresql.org/docs/8.0/interactive/arrays.html
如果这是一个可接受的选项,您的更新说明将只是: