我有一个存储userSettings的表。这些设置是从具有默认值的设置表和用户表中生成的。如果用户设置了某些内容(或更改了默认值),我将userIndications表中的自定义值存储在settingID和UserID中。基于2个外键列插入或更新
我得到的感谢设置,从这个帮助,所以质疑Joining 3 MySQL tables in to 1 query
现在我想要做的是插入一条记录,如果它不存在,或者更新,如果它。
我知道我可以使用ON DUPLICATE KEY,但是我想测试两个外键的userID和settingID,而不是测试userSettings表的主自动增量ID userSettingID。如果有匹配更新,如果没有匹配插入。
用户最多可能有20个自定义设置,因此我无法在userID列上设置UNIQUE。
感谢
'在dupe key'上可以使用** ANY **唯一密钥。它不一定是主键。所以如果你有'(userID,settingID)'作为唯一键,那么这足以触发更新。如果他们是外键也没关系。这些字段中的值仍然位于本地表中。他们只是有其他地方必须存在的额外财产。 –
我尝试将UNIQUE添加到userID和settingID列,但由于userSettings表中有多个userID列,所以失败。 – puks1978
“多个用户专栏”?咦?列名在表中是唯一的。你不能有2+名称相同的列。另一方面有多个记录......但是如果你有多个userid/settingid的副本,你如何判断这些设置值中的哪一个适用? –