UPSERT EDGE
UPSERT EDGE
性能远低于INSERT
,因为UPSERT
是一组分片级别的读取、修改、写入操作。
Danger
禁止在高并发写操作的情况下使用UPSERT
语句,请使用UPDATE
或INSERT
代替。
如果边不存在,无论WHEN
子句的条件是否满足,都会插入边,同时执行SET
子句,因此新插入的边的属性值取决于:
属性是否有默认值。
例如:
SET
子句指定end_year = 2021
。
是否满足WHEN 子句条件 | 属性是否有默认值 | 属性值 | end_year 属性值 |
---|---|---|---|
是 | 是 | 默认值 | 2021 |
是 | 否 | NULL | 2021 |
否 | 是 | 默认值 | 2021 |
否 | 否 | NULL | 2021 |
示例如下:
上面最后一个示例中,因为end_year
没有默认值,插入边时,end_year
默认值为NULL
,执行end_year = end_year + 1
后仍为NULL
。如果end_year
有默认值,则end_year = end_year + 1
可以正常执行,例如:
如果边存在,且满足WHEN
子句的条件,就会修改边的属性值。
如果边存在,但是不满足子句的条件,修改不会生效。