1
2i2Re2PLMaDnghL 2021 年 10 月 18 日
(难道不是多对多吗?
先查,做 diff,再改 |
2
KotlinAmai 2021 年 10 月 18 日
1. diif 操作前和操作后的数据,也就是增加了哪些关系还有删除了哪些关系。
或者 2. 表 3 不使用自增 id,使用表 1 和表 2 的联合主键。全量删除,全量创建。 |
3
akiakiseofficial 2021 年 10 月 18 日 via iPhone
歪门邪道但是实际用过的解决方案:
表三只存一条记录,表一的 id 、用逗号拼起来的表二的 id,这样更新的时候就只需要更新这一条记录,也不需要删除。 缺点是没办法联表查询了,不过一般也会禁止联表,所以可以接受。 |
4
kiracyan 2021 年 10 月 18 日 表 3 的自增列无实际意义的啊 变了就变了
|
5
JackZhu0Amazing OP @actar 嗯,1 操作看起来较为优雅,但是增加了复杂度,要查,然后依情况然后可能会有 insert 、delete 、update 等操作,相较我那种较为暴力的做法,大佬觉得 1 做法的优点有哪些
|
6
JackZhu0Amazing OP @2i2Re2PLMaDnghL 目前处理手法就是全量删除,然后批量新增,😂想过先 differ 然后再改,但是觉得增加了复杂度,并且没有找到直观的优点
|
7
JackZhu0Amazing OP @xlui 这种方法之前用过,好处就是更新起来方便,不好的地方就在于如你所说的不能联表查询,还有就是没办法 用表二的 id 查对应表一的 id,😂
|
8
a7082633 2021 年 10 月 18 日
看情况的,如果你的自增 ID 没有其他业务用到就保持现在的做法,要不然就用 diff.
|
9
FrankFang128 2021 年 10 月 18 日
只能一个一个修改
|
10
nekoneko 2021 年 10 月 18 日
数据库是啥呀,postgres 可以考虑数组
|
11
sun019 2021 年 10 月 18 日
现在挺好的
本来就是多对多关系。 |
12
shanghai1943 2021 年 10 月 18 日
如果表 3 的 id 没在别处用到的话,就先全删除然后批量新增
|
13
elrrrrrrr 2021 年 10 月 18 日
typeorm 的话用 cascade 配置就行
doc.types = [type1, type2] doc.types = [type1] doc.save() 即可 https://github.com/typeorm/typeorm/blob/master/docs/relations.md#cascades |
14
ccppgo 2021 年 10 月 18 日
表三甚至可以不要自增 ID
|
15
EscYezi 2021 年 10 月 18 日 via iPhone
先删再添加应该是最简单有效的办法,除非原来的数据不能直接删
|
16
lanlanye 2021 年 10 月 18 日
同楼上,表三其实不需要自增 ID,
如果非要有又不希望变,可以改用逻辑删除,先删再 upsert |
17
fortunezhang 2021 年 10 月 18 日
@xlui 哈哈,我也是这样用。搜索的时候只能用 like
|
18
corningsun 2021 年 10 月 18 日
|
19
2i2Re2PLMaDnghL 2021 年 10 月 18 日
|
20
EarthChild 2021 年 10 月 19 日
@corningsun #18 赞同,自己都说一对多了。一个作品多个类别。维护一个表多舒服
|
21
asLw0P981N0M0TCC 2021 年 10 月 19 日
真巧 这个问题我问过 https://www.v2ex.com/t/800291#reply18
|
22
JackZhu0Amazing OP @qwertyzzz 哈哈哈哈,握爪
|