我知道有很多关于 INSERT/UPDATE 的线程,但我没有找到解决我的问题的方法。
我有两个表来管理选项:
# table 1: option_fields
id | label | type | default
# table 2: option_values
id | field_id | user_id | value
注意: field_id 和 user_id 应该是外键,但它们不是。
如果条目不存在,我想插入 option_values 伪代码:
IF (field_id != 1 AND user_id != 2):
INSERT
INTO option_values (field_id, user_id, value)
VALUES (1, 2, "text")
ELSE:
UPDATE option_values
SET value = "text"
WHERE field_id = 1 AND user_id = 2
ENDIF;
我知道的方式:
#1:ON DUPLICATE KEY 不起作用,因为唯一的主键是“id”
#2: REPLACE 我不想使用 REPLACE,因为我认为它是一种肮脏的方式(每次有人更改他的选项时,主键都会被计算在内)。
#3: MySQL IF, THEN 使用过多的性能并且看起来也很脏。
你会选择什么样的解决方案,为什么?我猜#1是最好的,但我无法使用它。
提前致谢!