我有一個具有唯一varchar列的表。此列包含我可以向其發送推送通知的Android和iOS設備ID。更新行的唯一字段並將現有行中的值設置爲空
如果用戶在其他設備上登錄到其他設備上已存在該ID的帳戶,我希望將原始帳戶的列設置爲空,並將新行替換爲設備ID。
是否有一個語句可以實現這一點?或者我必須創建一個事務,該事務首先檢查表中的值並在更新新記錄之前將其設置爲空?顯然,如果我可以在一個聲明中這樣做,那將是更可取的。
我現在有一個查詢的是::
UPDATE gp_login SET deviceOS='$OS', device_id='$deviceID', id_updated_at=NOW() WHERE email='$email'
當然,當一個DEVICE_ID已經存在另一行中失敗,根據答案&評論
編輯澄清幾件事桌子。
我使用REPLACE播放,但它刪除行,並有不應丟失的行中的其他數據。
設備ID儘管是唯一的,但不是表的主鍵。 該表格是登錄到移動應用程序服務的移動用戶帳戶的列表。他們的設備ID已更新到其帳戶行中,但仍然是唯一的。我想要更新一行的設備ID,即使其他用戶存在相同的設備ID - 我只想先設置它爲null,以滿足唯一約束條件。
您的查詢在哪裏? –
你能否提供一個粗略的例子來正確引導你? – sagar
感謝您的意見。我已經更新了這個問題。 – Cross2four