我有一個存儲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的副本,你如何判斷這些設置值中的哪一個適用? –